module Hydra.Sources.Tier4.Test.Lib.Strings (stringPrimitiveTests) where import Hydra.Dsl.Tests stringPrimitiveTests :: TestGroup stringPrimitiveTests :: TestGroup stringPrimitiveTests = String -> Maybe String -> [TestGroup] -> [TestCase] -> TestGroup TestGroup String "hydra/lib/strings primitives" Maybe String forall a. Maybe a Nothing [TestGroup] groups [] where groups :: [TestGroup] groups = [TestGroup stringsCat, TestGroup stringsLength, TestGroup stringsSplitOn, TestGroup stringsToLower, TestGroup stringsToUpper] stringsCat :: TestGroup stringsCat :: TestGroup stringsCat = String -> Maybe String -> [TestGroup] -> [TestCase] -> TestGroup TestGroup String "cat" Maybe String forall a. Maybe a Nothing [] [ [String] -> String -> TestCase test [String "one", String "two", String "three"] String "onetwothree", [String] -> String -> TestCase test [String "", String "one", String "", String ""] String "one", [String] -> String -> TestCase test [] String ""] where test :: [String] -> String -> TestCase test [String] ls String result = Name -> [Term] -> Term -> TestCase primCase Name _strings_cat [[Term] -> Term list (String -> Term string (String -> Term) -> [String] -> [Term] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [String] ls)] (String -> Term string String result) stringsLength :: TestGroup stringsLength :: TestGroup stringsLength = String -> Maybe String -> [TestGroup] -> [TestCase] -> TestGroup TestGroup String "length" Maybe String forall a. Maybe a Nothing [] [ String -> Int -> TestCase test String "" Int 0, String -> Int -> TestCase test String "a" Int 1, String -> Int -> TestCase test String "one" Int 3] where test :: String -> Int -> TestCase test String s Int result = Name -> [Term] -> Term -> TestCase primCase Name _strings_length [String -> Term string String s] (Int -> Term int32 Int result) stringsSplitOn :: TestGroup stringsSplitOn :: TestGroup stringsSplitOn = String -> Maybe String -> [TestGroup] -> [TestCase] -> TestGroup TestGroup String "splitOn" Maybe String forall a. Maybe a Nothing [] [ String -> String -> [String] -> TestCase test String "ss" String "Mississippi" [String "Mi", String "i", String "ippi"], String -> String -> [String] -> TestCase test String "Mississippi" String "Mississippi" [String "", String ""], String -> String -> [String] -> TestCase test String " " String "one two three" [String "one", String "two", String "three"], String -> String -> [String] -> TestCase test String " " String " one two three " [String "", String "one", String "two", String "three", String ""], String -> String -> [String] -> TestCase test String " " String " one two three" [String "", String "", String "one", String "two", String "three"], String -> String -> [String] -> TestCase test String " " String " one two three" [String "", String "one two three"], String -> String -> [String] -> TestCase test String "aa" String "aaa" [String "", String "a"], String -> String -> [String] -> TestCase test String "a" String "" [String ""], String -> String -> [String] -> TestCase test String "" String "abc" [String "", String "a", String "b", String "c"], String -> String -> [String] -> TestCase test String "" String "" [String ""]] where test :: String -> String -> [String] -> TestCase test String s0 String s1 [String] result = Name -> [Term] -> Term -> TestCase primCase Name _strings_splitOn [String -> Term string String s0, String -> Term string String s1] ([Term] -> Term list (String -> Term string (String -> Term) -> [String] -> [Term] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [String] result)) stringsToLower :: TestGroup stringsToLower :: TestGroup stringsToLower = String -> Maybe String -> [TestGroup] -> [TestCase] -> TestGroup TestGroup String "toLower" Maybe String forall a. Maybe a Nothing [] [ String -> String -> TestCase test String "One TWO threE" String "one two three", String -> String -> TestCase test String "Abc123" String "abc123"] where test :: String -> String -> TestCase test String s String result = Name -> [Term] -> Term -> TestCase primCase Name _strings_toLower [String -> Term string String s] (String -> Term string String result) stringsToUpper :: TestGroup stringsToUpper :: TestGroup stringsToUpper = String -> Maybe String -> [TestGroup] -> [TestCase] -> TestGroup TestGroup String "toUpper" Maybe String forall a. Maybe a Nothing [] [ String -> String -> TestCase test String "One TWO threE" String "ONE TWO THREE", String -> String -> TestCase test String "Abc123" String "ABC123"] where test :: String -> String -> TestCase test String s String result = Name -> [Term] -> Term -> TestCase primCase Name _strings_toUpper [String -> Term string String s] (String -> Term string String result)