elm-review/tests/NoExtraBooleanComparisonTest.elm

82 lines
3.3 KiB
Elm
Raw Normal View History

2019-06-16 16:31:40 +03:00
module NoExtraBooleanComparisonTest exposing (all)
import Elm.Syntax.Range exposing (Location, Range)
2019-06-26 14:47:00 +03:00
import Lint.Rule as Rule exposing (Error, Rule)
2019-06-16 16:31:40 +03:00
import Lint.Rule.NoExtraBooleanComparison exposing (rule)
import Lint.Test exposing (LintResult)
2019-06-26 14:47:00 +03:00
import Test exposing (Test, describe, test)
2019-06-16 16:31:40 +03:00
testRule : String -> LintResult
testRule string =
"module A exposing (..)\n\n"
++ string
|> Lint.Test.run rule
2019-06-16 16:31:40 +03:00
tests : List Test
tests =
[ test "should not report condition without an operator" <|
\() ->
testRule "a = if n then 1 else 2"
|> Lint.Test.expectErrorsWithoutRange []
2019-06-16 16:31:40 +03:00
, test "should not report condition with integer operators" <|
\() ->
testRule """
a = if n < 1 then 1 else 2
b = if n <= 1 then 1 else 2
c = if n > 1 then 1 else 2
d = if n >= 1 then 1 else 2
"""
|> Lint.Test.expectErrorsWithoutRange []
2019-06-16 16:31:40 +03:00
, test "should not report condition using `not`" <|
\() ->
testRule "a = if not n then 1 else 2"
|> Lint.Test.expectErrorsWithoutRange []
2019-06-16 16:31:40 +03:00
, test "should report condition with `expr == True`" <|
\() ->
testRule "a = if b == True then 1 else 2"
|> Lint.Test.expectErrorsWithoutRange
[ Lint.Test.errorWithoutRange "Unnecessary comparison with `True`" ]
2019-06-16 16:31:40 +03:00
, test "should report condition with `True == expr`" <|
\() ->
testRule "a = if True == b then 1 else 2"
|> Lint.Test.expectErrorsWithoutRange
[ Lint.Test.errorWithoutRange "Unnecessary comparison with `True`" ]
2019-06-16 16:31:40 +03:00
, test "should report condition with `expr == False`" <|
\() ->
testRule "a = if b == False then 1 else 2"
|> Lint.Test.expectErrorsWithoutRange
[ Lint.Test.errorWithoutRange "Unnecessary comparison with `False`" ]
2019-06-16 16:31:40 +03:00
, test "should report condition with `False == expr`" <|
\() ->
testRule "a = if False == b then 1 else 2"
|> Lint.Test.expectErrorsWithoutRange
[ Lint.Test.errorWithoutRange "Unnecessary comparison with `False`" ]
2019-06-16 16:31:40 +03:00
, test "should report condition with `expr /= True`" <|
\() ->
testRule "a = if b /= True then 1 else 2"
|> Lint.Test.expectErrorsWithoutRange
[ Lint.Test.errorWithoutRange "Unnecessary comparison with `True`" ]
2019-06-16 16:31:40 +03:00
, test "should report condition with `True /= expr`" <|
\() ->
testRule "a = if True /= b then 1 else 2"
|> Lint.Test.expectErrorsWithoutRange
[ Lint.Test.errorWithoutRange "Unnecessary comparison with `True`" ]
2019-06-16 16:31:40 +03:00
, test "should report condition with `expr /= False`" <|
\() ->
testRule "a = if b /= False then 1 else 2"
|> Lint.Test.expectErrorsWithoutRange
[ Lint.Test.errorWithoutRange "Unnecessary comparison with `False`" ]
2019-06-16 16:31:40 +03:00
, test "should report condition with `False /= expr`" <|
\() ->
testRule "a = if False /= b then 1 else 2"
|> Lint.Test.expectErrorsWithoutRange
[ Lint.Test.errorWithoutRange "Unnecessary comparison with `False`" ]
2019-06-16 16:31:40 +03:00
]
all : Test
all =
describe "NoExtraBooleanComparison" tests