From 59895c92cd156fdbfa685a9da78f535ab0595065 Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Mon, 12 Aug 2024 12:21:19 +0200 Subject: Start with official tests --- tests/parse.scm | 359 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 183 insertions(+), 176 deletions(-) (limited to 'tests') diff --git a/tests/parse.scm b/tests/parse.scm index 4959f5d..8a6c87b 100644 --- a/tests/parse.scm +++ b/tests/parse.scm @@ -18,182 +18,189 @@ (test-group "Official" (test "testBasicDirection" - (cook->list '(recipe (metadata ()) ((step ("Add a bit of chilli"))))) - (parse-cook "Add a bit of chilli\n")) + '(recipe (metadata ()) ((step ("Add a bit of chilli ")))) + (cook->list (parse-cook "Add a bit of chilli\n"))) (test "testComments" - (cook->list '(recipe (metadata ()) ((comment ("testing comments"))))) - (parse-cook "-- testing comments\n")) + '(recipe (metadata ()) ((comment " testing comments"))) + (cook->list (parse-cook "-- testing comments\n"))) (test "testCommentsAfterIngredients" - (cook->list '()) - (parse-cook "@thyme{2%sprigs} -- testing comments\nand some text\n")) + '(recipe (metadata ()) + ((step ((ingredient "thyme" (amount 2 "sprigs")) + " " (comment " testing comments") "and some text ")))) + (cook->list + (parse-cook "@thyme{2%sprigs} -- testing comments\nand some text\n"))) (test "testCommentsWithIngredients" - (cook->list '()) - (parse-cook "-- testing comments\n@thyme{2%sprigs}\n")) - (test "testDirectionsWithDegrees" - (cook->list '()) - (parse-cook "Heat oven up to 200°C\n")) - (test "testDirectionsWithNumbers" - (cook->list '()) - (parse-cook "Heat 5L of water\n")) - (test "testDirectionWithIngredient" - (cook->list '()) - (parse-cook "Add @chilli{3%items}, @ginger{10%g} and @milk{1%l}.\n")) - (test "testEquipmentMultipleWords" - (cook->list '()) - (parse-cook "Fry in #frying pan{}\n")) - (test "testEquipmentMultipleWordsWithLeadingNumber" - (cook->list '()) - (parse-cook "Fry in #7-inch nonstick frying pan{ }\n")) - (test "testEquipmentMultipleWordsWithSpaces" - (cook->list '()) - (parse-cook "Fry in #frying pan{ }\n")) - (test "testEquipmentOneWord" - (cook->list '()) - (parse-cook "Simmer in #pan for some time\n")) - (test "testEquipmentQuantity" - (cook->list '()) - (parse-cook "#frying pan{2}\n")) - (test "testEquipmentQuantityOneWord" - (cook->list '()) - (parse-cook "#frying pan{three}\n")) - (test "testEquipmentQuantityMultipleWords" - (cook->list '()) - (parse-cook "#frying pan{two small}\n")) - (test "testFractions" - (cook->list '()) - (parse-cook "@milk{1/2%cup}\n")) - (test "testFractionsInDirections" - (cook->list '()) - (parse-cook "knife cut about every 1/2 inches\n")) - (test "testFractionsLike" - (cook->list '()) - (parse-cook "@milk{01/2%cup}\n")) - (test "testFractionsWithSpaces" - (cook->list '()) - (parse-cook "@milk{1 / 2 %cup}\n")) - (test "testIngredientMultipleWordsWithLeadingNumber" - (cook->list '()) - (parse-cook "Top with @1000 island dressing{ }\n")) - (test "testIngredientWithEmoji" - (cook->list '()) - (parse-cook "Add some @đŸ§‚\n")) - (test "testIngredientExplicitUnits" - (cook->list '()) - (parse-cook "@chilli{3%items}\n")) - (test "testIngredientExplicitUnitsWithSpaces" - (cook->list '()) - (parse-cook "@chilli{ 3 % items }\n")) - (test "testIngredientImplicitUnits" - (cook->list '()) - (parse-cook "@chilli{3}\n")) - (test "testIngredientNoUnits" - (cook->list '()) - (parse-cook "@chilli\n")) - (test "testIngredientNoUnitsNotOnlyString" - (cook->list '()) - (parse-cook "@5peppers\n")) - (test "testIngredientWithNumbers" - (cook->list '()) - (parse-cook "@tipo 00 flour{250%g}\n")) - (test "testIngredientWithoutStopper" - (cook->list '()) - (parse-cook "@chilli cut into pieces\n")) - (test "testMetadata" - (cook->list '()) - (parse-cook ">> sourced: babooshka\n")) - (test "testMetadataBreak" - (cook->list '()) - (parse-cook "hello >> sourced: babooshka\n")) - (test "testMetadataMultiwordKey" - (cook->list '()) - (parse-cook ">> cooking time: 30 mins\n")) - (test "testMetadataMultiwordKeyWithSpaces" - (cook->list '()) - (parse-cook ">>cooking time :30 mins\n")) - (test "testMultiLineDirections" - (cook->list '()) - (parse-cook "Add a bit of chilli\nAdd a bit of hummus\n")) - (test "testMultipleLines" - (cook->list '()) - (parse-cook ">> Prep Time: 15 minutes\n>> Cook Time: 30 minutes\n")) - (test "testMultiWordIngredient" - (cook->list '()) - (parse-cook "@hot chilli{3}\n")) - (test "testMultiWordIngredientNoAmount" - (cook->list '()) - (parse-cook "@hot chilli{}\n")) - (test "testMutipleIngredientsWithoutStopper" - (cook->list '()) - (parse-cook "@chilli cut into pieces and @garlic\n")) - (test "testQuantityAsText" - (cook->list '()) - (parse-cook "@thyme{few%sprigs}\n")) - (test "testQuantityDigitalString" - (cook->list '()) - (parse-cook "@water{7 k }\n")) - (test "testServings" - (cook->list '()) - (parse-cook ">> servings: 1|2|3\n")) - (test "testSlashInText" - (cook->list '()) - (parse-cook "Preheat the oven to 200℃/Fan 180°C.\n")) - (test "testTimerDecimal" - (cook->list '()) - (parse-cook "Fry for ~{1.5%minutes}\n")) - (test "testTimerFractional" - (cook->list '()) - (parse-cook "Fry for ~{1/2%hour}\n")) - (test "testTimerInteger" - (cook->list '()) - (parse-cook "Fry for ~{10%minutes}\n")) - (test "testTimerWithName" - (cook->list '()) - (parse-cook "Fry for ~potato{42%minutes}\n")) - (test "testSingleWordTimer" - (cook->list '()) - (parse-cook "Let it ~rest after plating\n")) - (test "testSingleWordTimerWithPunctuation" - (cook->list '()) - (parse-cook "Let it ~rest, then serve\n")) - (test "testSingleWordTimerWithUnicodePunctuation" - (cook->list '()) - (parse-cook "Let it ~rest⸫ then serve\n")) - (test "testTimerWithUnicodeWhitespace" - (cook->list '()) - (parse-cook "Let it ~rest then serve\n")) - (test "testInvalidMultiWordTimer" - (cook->list '()) - (parse-cook "It is ~ {5}\n")) - (test "testInvalidSingleWordTimer" - (cook->list '()) - (parse-cook "It is ~ 5\n")) - (test "testSingleWordIngredientWithPunctuation" - (cook->list '()) - (parse-cook "Add some @chilli, then serve\n")) - (test "testSingleWordIngredientWithUnicodePunctuation" - (cook->list '()) - (parse-cook "Add @chilli⸫ then bake\n")) - (test "testIngredientWithUnicodeWhitespace" - (cook->list '()) - (parse-cook "Add @chilli then bake\n")) - (test "testInvalidMultiWordIngredient" - (cook->list '()) - (parse-cook "Message @ example{}\n")) - (test "testInvalidSingleWordIngredient" - (cook->list '()) - (parse-cook "Message me @ example\n")) - (test "testSingleWordCookwareWithPunctuation" - (cook->list '()) - (parse-cook "Place in #pot, then boil\n")) - (test "testSingleWordCookwareWithUnicodePunctuation" - (cook->list '()) - (parse-cook "Place in #pot⸫ then boil\n")) - (test "testCookwareWithUnicodeWhitespace" - (cook->list '()) - (parse-cook "Add to #pot then boil\n")) - (test "testInvalidMultiWordCookware" - (cook->list '(recipe (metadata ()) ((step ("Recipe # 10{}"))))) - (parse-cook "Recipe # 10{}\n")) - (test "testInvalidSingleWordCookware" - (cook->list '(recipe (metadata ()) ((step ("Recipe # 5"))))) - (parse-cook "Recipe # 5\n"))) + '(recipe (metadata ()) + ((comment " testing comments") + (step ((ingredient "thyme" (amount 2 "sprigs")) " ")))) + (cook->list + (parse-cook "-- testing comments\n@thyme{2%sprigs}\n"))) + ;(test "testDirectionsWithDegrees" + ; '() + ; (cook->list (parse-cook "Heat oven up to 200°C\n"))) + ;(test "testDirectionsWithNumbers" + ; '() + ; (cook->list (parse-cook "Heat 5L of water\n"))) + ;(test "testDirectionWithIngredient" + ; '() + ; (cook->list (parse-cook "Add @chilli{3%items}, @ginger{10%g} and @milk{1%l}.\n"))) + ;(test "testEquipmentMultipleWords" + ; '() + ; (cook->list (parse-cook "Fry in #frying pan{}\n"))) + ;(test "testEquipmentMultipleWordsWithLeadingNumber" + ; '() + ; (cook->list (parse-cook "Fry in #7-inch nonstick frying pan{ }\n"))) + ;(test "testEquipmentMultipleWordsWithSpaces" + ; '() + ; (cook->list (parse-cook "Fry in #frying pan{ }\n"))) + ;(test "testEquipmentOneWord" + ; '() + ; (cook->list (parse-cook "Simmer in #pan for some time\n"))) + ;(test "testEquipmentQuantity" + ; '() + ; (cook->list (parse-cook "#frying pan{2}\n"))) + ;(test "testEquipmentQuantityOneWord" + ; '() + ; (cook->list (parse-cook "#frying pan{three}\n"))) + ;(test "testEquipmentQuantityMultipleWords" + ; '() + ; (cook->list (parse-cook "#frying pan{two small}\n"))) + ;(test "testFractions" + ; '() + ; (cook->list (parse-cook "@milk{1/2%cup}\n"))) + ;(test "testFractionsInDirections" + ; '() + ; (cook->list (parse-cook "knife cut about every 1/2 inches\n"))) + ;(test "testFractionsLike" + ; '() + ; (cook->list (parse-cook "@milk{01/2%cup}\n"))) + ;(test "testFractionsWithSpaces" + ; '() + ; (cook->list (parse-cook "@milk{1 / 2 %cup}\n"))) + ;(test "testIngredientMultipleWordsWithLeadingNumber" + ; '() + ; (cook->list (parse-cook "Top with @1000 island dressing{ }\n"))) + ;(test "testIngredientWithEmoji" + ; '() + ; (cook->list (parse-cook "Add some @đŸ§‚\n"))) + ;(test "testIngredientExplicitUnits" + ; '() + ; (cook->list (parse-cook "@chilli{3%items}\n"))) + ;(test "testIngredientExplicitUnitsWithSpaces" + ; '() + ; (cook->list (parse-cook "@chilli{ 3 % items }\n"))) + ;(test "testIngredientImplicitUnits" + ; '() + ; (cook->list (parse-cook "@chilli{3}\n"))) + ;(test "testIngredientNoUnits" + ; '() + ; (cook->list (parse-cook "@chilli\n"))) + ;(test "testIngredientNoUnitsNotOnlyString" + ; '() + ; (cook->list (parse-cook "@5peppers\n"))) + ;(test "testIngredientWithNumbers" + ; '() + ; (cook->list (parse-cook "@tipo 00 flour{250%g}\n"))) + ;(test "testIngredientWithoutStopper" + ; '() + ; (cook->list (parse-cook "@chilli cut into pieces\n"))) + ;(test "testMetadata" + ; '() + ; (cook->list (parse-cook ">> sourced: babooshka\n"))) + ;(test "testMetadataBreak" + ; '() + ; (cook->list (parse-cook "hello >> sourced: babooshka\n"))) + ;(test "testMetadataMultiwordKey" + ; '() + ; (cook->list (parse-cook ">> cooking time: 30 mins\n"))) + ;(test "testMetadataMultiwordKeyWithSpaces" + ; '() + ; (cook->list (parse-cook ">>cooking time :30 mins\n"))) + ;(test "testMultiLineDirections" + ; '() + ; (cook->list (parse-cook "Add a bit of chilli\nAdd a bit of hummus\n"))) + ;(test "testMultipleLines" + ; '() + ; (cook->list (parse-cook ">> Prep Time: 15 minutes\n>> Cook Time: 30 minutes\n"))) + ;(test "testMultiWordIngredient" + ; '() + ; (cook->list (parse-cook "@hot chilli{3}\n"))) + ;(test "testMultiWordIngredientNoAmount" + ; '() + ; (cook->list (parse-cook "@hot chilli{}\n"))) + ;(test "testMutipleIngredientsWithoutStopper" + ; '() + ; (cook->list (parse-cook "@chilli cut into pieces and @garlic\n"))) + ;(test "testQuantityAsText" + ; '() + ; (cook->list (parse-cook "@thyme{few%sprigs}\n"))) + ;(test "testQuantityDigitalString" + ; '() + ; (cook->list (parse-cook "@water{7 k }\n"))) + ;(test "testServings" + ; '() + ; (cook->list (parse-cook ">> servings: 1|2|3\n"))) + ;(test "testSlashInText" + ; '() + ; (cook->list (parse-cook "Preheat the oven to 200℃/Fan 180°C.\n"))) + ;(test "testTimerDecimal" + ; '() + ; (cook->list (parse-cook "Fry for ~{1.5%minutes}\n"))) + ;(test "testTimerFractional" + ; '() + ; (cook->list (parse-cook "Fry for ~{1/2%hour}\n"))) + ;(test "testTimerInteger" + ; '() + ; (cook->list (parse-cook "Fry for ~{10%minutes}\n"))) + ;(test "testTimerWithName" + ; '() + ; (cook->list (parse-cook "Fry for ~potato{42%minutes}\n"))) + ;(test "testSingleWordTimer" + ; '() + ; (cook->list (parse-cook "Let it ~rest after plating\n"))) + ;(test "testSingleWordTimerWithPunctuation" + ; '() + ; (cook->list (parse-cook "Let it ~rest, then serve\n"))) + ;(test "testSingleWordTimerWithUnicodePunctuation" + ; '() + ; (cook->list (parse-cook "Let it ~rest⸫ then serve\n"))) + ;(test "testTimerWithUnicodeWhitespace" + ; '() + ; (cook->list (parse-cook "Let it ~rest then serve\n"))) + ;(test "testInvalidMultiWordTimer" + ; '() + ; (cook->list (parse-cook "It is ~ {5}\n"))) + ;(test "testInvalidSingleWordTimer" + ; '() + ; (cook->list (parse-cook "It is ~ 5\n"))) + ;(test "testSingleWordIngredientWithPunctuation" + ; '() + ; (cook->list (parse-cook "Add some @chilli, then serve\n"))) + ;(test "testSingleWordIngredientWithUnicodePunctuation" + ; '() + ; (cook->list (parse-cook "Add @chilli⸫ then bake\n"))) + ;(test "testIngredientWithUnicodeWhitespace" + ; '() + ; (cook->list (parse-cook "Add @chilli then bake\n"))) + ;(test "testInvalidMultiWordIngredient" + ; '() + ; (cook->list (parse-cook "Message @ example{}\n"))) + ;(test "testInvalidSingleWordIngredient" + ; '() + ; (cook->list (parse-cook "Message me @ example\n"))) + ;(test "testSingleWordCookwareWithPunctuation" + ; '() + ; (cook->list (parse-cook "Place in #pot, then boil\n"))) + ;(test "testSingleWordCookwareWithUnicodePunctuation" + ; '() + ; (cook->list (parse-cook "Place in #pot⸫ then boil\n"))) + ;(test "testCookwareWithUnicodeWhitespace" + ; '() + ; (cook->list (parse-cook "Add to #pot then boil\n"))) + ;(test "testInvalidMultiWordCookware" + ; '(recipe (metadata ()) ((step ("Recipe # 10{}")))) + ; (cook->list (parse-cook "Recipe # 10{}\n"))) + ;(test "testInvalidSingleWordCookware" + ; '(recipe (metadata ()) ((step ("Recipe # 5")))) + ; (cook->list (parse-cook "Recipe # 5\n"))) + ) -- cgit v1.2.3