@@ -675,4 +675,99 @@ class InterpreterUnaryTest
675675 evaluateUnaryTests(expression = " list contains([1,2], 3)" , 3 ) should returnResult(false )
676676 }
677677
678+ " A negation" should " return true if it evaluates to a value that is not equal to the implicit value" in {
679+
680+ evaluateUnaryTests(" not(1)" , 3 ) should returnResult(true )
681+ evaluateUnaryTests(""" not("a") """ , " b" ) should returnResult(true )
682+ }
683+
684+ it should " return false if it evaluates to a value that is equal to the implicit value" in {
685+
686+ evaluateUnaryTests(" not(3)" , 3 ) should returnResult(false )
687+ evaluateUnaryTests(""" not("b") """ , " b" ) should returnResult(false )
688+ }
689+
690+ it should " return null if it evaluates to a value that has a different type than the implicit value" in {
691+
692+ evaluateUnaryTests(" not(1)" , " b" ) should returnNull()
693+ evaluateUnaryTests(""" not("a") """ , 2 ) should returnNull()
694+ }
695+
696+ it should " return true if it evaluates to false when the implicit value is applied to it" in {
697+
698+ evaluateUnaryTests(" not(< 3)" , 5 ) should returnResult(true )
699+ evaluateUnaryTests(" not([1..3])" , 5 ) should returnResult(true )
700+ evaluateUnaryTests(" not(> x)" , inputValue = 5 , variables = Map (" x" -> 10 )) should returnResult(
701+ true
702+ )
703+ }
704+
705+ it should " return false if it evaluates to true when the implicit value is applied to it" in {
706+
707+ evaluateUnaryTests(" not(< 10)" , 5 ) should returnResult(false )
708+ evaluateUnaryTests(" not([1..10])" , 5 ) should returnResult(false )
709+ evaluateUnaryTests(" not(> x)" , inputValue = 5 , variables = Map (" x" -> 3 )) should returnResult(
710+ false
711+ )
712+ }
713+
714+ it should " return null if it evaluates to null when the implicit value is applied to it" in {
715+
716+ evaluateUnaryTests(" not(< 3)" , " a" ) should returnNull()
717+ evaluateUnaryTests(" not(< 3)" , inputValue = null ) should returnNull()
718+ }
719+
720+ it should " return true if it evaluates to false" in {
721+
722+ evaluateUnaryTests(" not(x)" , inputValue = 3 , variables = Map (" x" -> false )) should returnResult(
723+ true
724+ )
725+ evaluateUnaryTests(" not(4 > 10)" , 3 ) should returnResult(true )
726+ evaluateUnaryTests(" not(odd(4))" , 3 ) should returnResult(true )
727+ evaluateUnaryTests(" not(list contains([1,2], 3))" , 3 ) should returnResult(true )
728+ }
729+
730+ it should " return false if it evaluates to true" in {
731+
732+ evaluateUnaryTests(" not(x)" , inputValue = 3 , variables = Map (" x" -> true )) should returnResult(
733+ false
734+ )
735+ evaluateUnaryTests(" not(4 < 10)" , 3 ) should returnResult(false )
736+ evaluateUnaryTests(" not(even(4))" , 3 ) should returnResult(false )
737+ evaluateUnaryTests(" not(list contains([1,2,3], 3))" , 3 ) should returnResult(false )
738+ }
739+
740+ it should " return true if it evaluates to null and the implicit value is not null" in {
741+
742+ evaluateUnaryTests(" not(null)" , 5 ) should returnResult(true )
743+ evaluateUnaryTests(" not(not_existing)" , 5 ) should returnResult(true )
744+ }
745+
746+ it should " return false if it evaluates to null and the implicit value is null" in {
747+
748+ evaluateUnaryTests(" not(null)" , inputValue = null ) should returnResult(false )
749+ evaluateUnaryTests(" not(not_existing)" , inputValue = null ) should returnResult(false )
750+ }
751+
752+ it should " return true if a disjunction evaluates to false" in {
753+
754+ evaluateUnaryTests(" not(2,3)" , 5 ) should returnResult(true )
755+ evaluateUnaryTests(" not(< 3, > 10)" , 5 ) should returnResult(true )
756+ evaluateUnaryTests(" not([0..3], [10..20])" , 5 ) should returnResult(true )
757+ }
758+
759+ it should " return false if a disjunction evaluates to true" in {
760+
761+ evaluateUnaryTests(" not(2,3)" , 3 ) should returnResult(false )
762+ evaluateUnaryTests(" not(< 3, > 10)" , 1 ) should returnResult(false )
763+ evaluateUnaryTests(" not([0..3], [10..20])" , 1 ) should returnResult(false )
764+ }
765+
766+ it should " return null if a disjunction evaluates to null" in {
767+
768+ evaluateUnaryTests(" not(2,3)" , " a" ) should returnNull()
769+ evaluateUnaryTests(" not(< 3, > 10)" , " a" ) should returnNull()
770+ evaluateUnaryTests(" not([0..3], [10..20])" , " a" ) should returnNull()
771+ }
772+
678773}
0 commit comments