module TypesSpec (tests) where import Test.Tasty import Test.Tasty.HUnit import Types ( AppR(..) , CustomHeaderColumn(..) , CustomHeaderR(..) , RangeInAlign(..) , left , top ) tests :: TestTree tests = testGroup "Types" [ appRTests , customHeaderColumnTests , customHeaderRTests , rangeInAlignTests ] -- --------------------------------------------------------------------------- -- AppR -- --------------------------------------------------------------------------- appRTests :: TestTree appRTests = testGroup "AppR" [ testCase "MethodEditor == MethodEditor" $ MethodEditor @?= MethodEditor , testCase "UrlEditor == UrlEditor" $ UrlEditor @?= UrlEditor , testCase "DefaultHeadersToggle == DefaultHeadersToggle" $ DefaultHeadersToggle @?= DefaultHeadersToggle , testCase "AddCustomHeader == AddCustomHeader" $ AddCustomHeader @?= AddCustomHeader , testCase "ResponseBodyView == ResponseBodyView" $ ResponseBodyView @?= ResponseBodyView , testCase "MethodSelector == MethodSelector" $ MethodSelector @?= MethodSelector , testCase "ExistingCustomHeader equal with same key" $ ExistingCustomHeader (MkCustomHeaderR 0 ActiveToggle) @?= ExistingCustomHeader (MkCustomHeaderR 0 ActiveToggle) , testCase "MethodEditor /= UrlEditor" $ (MethodEditor == UrlEditor) @?= False , testCase "ExistingCustomHeader differs by listIndex" $ ( ExistingCustomHeader (MkCustomHeaderR 0 ActiveToggle) == ExistingCustomHeader (MkCustomHeaderR 1 ActiveToggle) ) @?= False , testCase "Ord: MethodEditor < UrlEditor" $ (MethodEditor < UrlEditor) @?= True , testCase "Ord: UrlEditor < DefaultHeadersToggle" $ (UrlEditor < DefaultHeadersToggle) @?= True , testCase "Ord: DefaultHeadersToggle < ExistingCustomHeader" $ (DefaultHeadersToggle < ExistingCustomHeader (MkCustomHeaderR 0 ActiveToggle)) @?= True , testCase "Ord: ExistingCustomHeader < AddCustomHeader" $ (ExistingCustomHeader (MkCustomHeaderR 0 ActiveToggle) < AddCustomHeader) @?= True , testCase "Ord: AddCustomHeader < ResponseBodyView" $ (AddCustomHeader < ResponseBodyView) @?= True , testCase "Ord: ResponseBodyView < MethodSelector" $ (ResponseBodyView < MethodSelector) @?= True , testCase "Show MethodEditor" $ show MethodEditor @?= "MethodEditor" , testCase "Show UrlEditor" $ show UrlEditor @?= "UrlEditor" , testCase "Show DefaultHeadersToggle" $ show DefaultHeadersToggle @?= "DefaultHeadersToggle" , testCase "Show AddCustomHeader" $ show AddCustomHeader @?= "AddCustomHeader" , testCase "Show ResponseBodyView" $ show ResponseBodyView @?= "ResponseBodyView" , testCase "Show MethodSelector" $ show MethodSelector @?= "MethodSelector" ] -- --------------------------------------------------------------------------- -- CustomHeaderColumn -- --------------------------------------------------------------------------- customHeaderColumnTests :: TestTree customHeaderColumnTests = testGroup "CustomHeaderColumn" [ testCase "ActiveToggle == ActiveToggle" $ ActiveToggle @?= ActiveToggle , testCase "NameEditor == NameEditor" $ NameEditor @?= NameEditor , testCase "ValueEditor == ValueEditor" $ ValueEditor @?= ValueEditor , testCase "ActiveToggle /= NameEditor" $ (ActiveToggle == NameEditor) @?= False , testCase "NameEditor /= ValueEditor" $ (NameEditor == ValueEditor) @?= False , testCase "Ord: ActiveToggle < NameEditor" $ (ActiveToggle < NameEditor) @?= True , testCase "Ord: NameEditor < ValueEditor" $ (NameEditor < ValueEditor) @?= True , testCase "Show ActiveToggle" $ show ActiveToggle @?= "ActiveToggle" , testCase "Show NameEditor" $ show NameEditor @?= "NameEditor" , testCase "Show ValueEditor" $ show ValueEditor @?= "ValueEditor" ] -- --------------------------------------------------------------------------- -- CustomHeaderR -- --------------------------------------------------------------------------- customHeaderRTests :: TestTree customHeaderRTests = testGroup "CustomHeaderR" [ testCase "equal records are equal" $ MkCustomHeaderR 0 ActiveToggle @?= MkCustomHeaderR 0 ActiveToggle , testCase "different listIndex yields inequality" $ (MkCustomHeaderR 0 ActiveToggle == MkCustomHeaderR 1 ActiveToggle) @?= False , testCase "different column yields inequality" $ (MkCustomHeaderR 0 ActiveToggle == MkCustomHeaderR 0 NameEditor) @?= False , testCase "listIndex accessor" $ listIndex (MkCustomHeaderR 3 ValueEditor) @?= 3 , testCase "column accessor" $ column (MkCustomHeaderR 3 ValueEditor) @?= ValueEditor , testCase "Ord: smaller listIndex sorts first" $ (MkCustomHeaderR 0 ActiveToggle < MkCustomHeaderR 1 ActiveToggle) @?= True , testCase "Ord: same listIndex, column determines order" $ (MkCustomHeaderR 0 ActiveToggle < MkCustomHeaderR 0 NameEditor) @?= True , testCase "Show includes all fields" $ show (MkCustomHeaderR 0 ActiveToggle) @?= "MkCustomHeaderR {listIndex = 0, column = ActiveToggle}" ] -- --------------------------------------------------------------------------- -- RangeInAlign / VertAlign / WideAlign -- --------------------------------------------------------------------------- rangeInAlignTests :: TestTree rangeInAlignTests = testGroup "RangeInAlign" [ testCase "top is Min" $ top @?= Min , testCase "left is Min" $ left @?= Min , testCase "Min == Min" $ Min @?= Min , testCase "MidL == MidL" $ MidL @?= MidL , testCase "MidG == MidG" $ MidG @?= MidG , testCase "Max == Max" $ Max @?= Max , testCase "Min /= Max" $ (Min == Max) @?= False , testCase "Ord: Min < MidL" $ (Min < MidL) @?= True , testCase "Ord: MidL < MidG" $ (MidL < MidG) @?= True , testCase "Ord: MidG < Max" $ (MidG < Max) @?= True , testCase "Show Min" $ show Min @?= "Min" , testCase "Show MidL" $ show MidL @?= "MidL" , testCase "Show MidG" $ show MidG @?= "MidG" , testCase "Show Max" $ show Max @?= "Max" ]