summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/parse.scm359
1 files changed, 183 insertions, 176 deletions
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")))
+ )