146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil/* 246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* Copyright (C) 2015 The Android Open Source Project 346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* 446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* Licensed under the Apache License, Version 2.0 (the "License"); 546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* you may not use this file except in compliance with the License. 646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* You may obtain a copy of the License at 746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* 846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* http://www.apache.org/licenses/LICENSE-2.0 946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* 1046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* Unless required by applicable law or agreed to in writing, software 1146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* distributed under the License is distributed on an "AS IS" BASIS, 1246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* See the License for the specific language governing permissions and 1446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil* limitations under the License. 1546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil*/ 1646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 1746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdilpublic class Main { 1846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 1946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // Note #1: `javac` flips the conditions of If statements. 2046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // Note #2: In the optimizing compiler, the first input of Phi is always 2146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // the fall-through path, i.e. the false branch. 2246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 2346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil public static void assertBoolEquals(boolean expected, boolean result) { 2446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil if (expected != result) { 2546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil throw new Error("Expected: " + expected + ", found: " + result); 2646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil } 2746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil } 2846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 29769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil public static void assertIntEquals(int expected, int result) { 30769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil if (expected != result) { 31769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil throw new Error("Expected: " + expected + ", found: " + result); 32769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil } 33769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil } 34769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil 3546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil /* 360d13fee6f4330cc9cb100c43135490a34c11d7a5David Brazdil * Elementary test negating a boolean. Verifies that blocks are merged and 370d13fee6f4330cc9cb100c43135490a34c11d7a5David Brazdil * empty branches removed. 3846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil */ 3946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 4046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.BooleanNot(boolean) boolean_simplifier (before) 4146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Param:z\d+]] ParameterValue 4246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const0:i\d+]] IntConstant 0 4346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const1:i\d+]] IntConstant 1 440d13fee6f4330cc9cb100c43135490a34c11d7a5David Brazdil // CHECK-DAG: If [ [[Param]] ] 4546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Phi:i\d+]] Phi [ [[Const1]] [[Const0]] ] 4646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: Return [ [[Phi]] ] 4746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 4846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.BooleanNot(boolean) boolean_simplifier (before) 4946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK: Goto 5046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK: Goto 5146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK: Goto 5246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-NOT: Goto 5346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 5446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.BooleanNot(boolean) boolean_simplifier (after) 5546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Param:z\d+]] ParameterValue 5646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const0:i\d+]] IntConstant 0 570d13fee6f4330cc9cb100c43135490a34c11d7a5David Brazdil // CHECK-DAG: [[NotParam:z\d+]] BooleanNot [ [[Param]] ] 580d13fee6f4330cc9cb100c43135490a34c11d7a5David Brazdil // CHECK-DAG: Return [ [[NotParam]] ] 5946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 6046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.BooleanNot(boolean) boolean_simplifier (after) 6146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-NOT: If 6246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-NOT: Phi 6346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 6446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.BooleanNot(boolean) boolean_simplifier (after) 6546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK: Goto 6646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-NOT: Goto 6746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 6846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil public static boolean BooleanNot(boolean x) { 6946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil return !x; 7046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil } 7146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 7246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil /* 7346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil * Program which only delegates the condition, i.e. returns 1 when True 7446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil * and 0 when False. 7546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil */ 7646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 7746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.GreaterThan(int, int) boolean_simplifier (before) 7846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamX:i\d+]] ParameterValue 7946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamY:i\d+]] ParameterValue 8046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const0:i\d+]] IntConstant 0 8146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const1:i\d+]] IntConstant 1 8246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Cond:z\d+]] GreaterThan [ [[ParamX]] [[ParamY]] ] 8346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: If [ [[Cond]] ] 8446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Phi:i\d+]] Phi [ [[Const0]] [[Const1]] ] 8546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: Return [ [[Phi]] ] 8646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 8746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.GreaterThan(int, int) boolean_simplifier (after) 8846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamX:i\d+]] ParameterValue 8946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamY:i\d+]] ParameterValue 9046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const0:i\d+]] IntConstant 0 9146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const1:i\d+]] IntConstant 1 9246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Cond:z\d+]] GreaterThan [ [[ParamX]] [[ParamY]] ] 9346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: Return [ [[Cond]] ] 9446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 9546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil public static boolean GreaterThan(int x, int y) { 9646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil return (x <= y) ? false : true; 9746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil } 9846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 9946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil /* 10046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil * Program which negates a condition, i.e. returns 0 when True 10146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil * and 1 when False. 10246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil */ 10346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 10446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.LessThan(int, int) boolean_simplifier (before) 10546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamX:i\d+]] ParameterValue 10646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamY:i\d+]] ParameterValue 10746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const0:i\d+]] IntConstant 0 10846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const1:i\d+]] IntConstant 1 10946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Cond:z\d+]] GreaterThanOrEqual [ [[ParamX]] [[ParamY]] ] 11046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: If [ [[Cond]] ] 11146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Phi:i\d+]] Phi [ [[Const1]] [[Const0]] ] 11246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: Return [ [[Phi]] ] 11346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 11446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.LessThan(int, int) boolean_simplifier (after) 11546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamX:i\d+]] ParameterValue 11646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamY:i\d+]] ParameterValue 11746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const0:i\d+]] IntConstant 0 11846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const1:i\d+]] IntConstant 1 11946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Cond:z\d+]] LessThan [ [[ParamX]] [[ParamY]] ] 12046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: Return [ [[Cond]] ] 12146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 12246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil public static boolean LessThan(int x, int y) { 123b2bd1c5f9171f35fa5b71ada42d1a9e11189428dDavid Brazdil return (x < y) ? true : false; 12446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil } 12546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 12646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil /* 12746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil * Program which further uses negated conditions. 12846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil * Note that Phis are discovered retrospectively. 12946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil */ 13046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 13146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.ValuesOrdered(int, int, int) boolean_simplifier (before) 13246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamX:i\d+]] ParameterValue 13346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamY:i\d+]] ParameterValue 13446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamZ:i\d+]] ParameterValue 13546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const0:i\d+]] IntConstant 0 13646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[Const1:i\d+]] IntConstant 1 13746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[CondXY:z\d+]] GreaterThan [ [[ParamX]] [[ParamY]] ] 13846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: If [ [[CondXY]] ] 13946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[CondYZ:z\d+]] GreaterThan [ [[ParamY]] [[ParamZ]] ] 14046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: If [ [[CondYZ]] ] 14146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[CondXYZ:z\d+]] NotEqual [ [[PhiXY:i\d+]] [[PhiYZ:i\d+]] ] 14246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: If [ [[CondXYZ]] ] 14346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: Return [ [[PhiXYZ:i\d+]] ] 14446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[PhiXY]] Phi [ [[Const1]] [[Const0]] ] 14546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[PhiYZ]] Phi [ [[Const1]] [[Const0]] ] 14646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[PhiXYZ]] Phi [ [[Const1]] [[Const0]] ] 14746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 14846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-START: boolean Main.ValuesOrdered(int, int, int) boolean_simplifier (after) 14946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamX:i\d+]] ParameterValue 15046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamY:i\d+]] ParameterValue 15146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[ParamZ:i\d+]] ParameterValue 15246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[CmpXY:z\d+]] LessThanOrEqual [ [[ParamX]] [[ParamY]] ] 15346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[CmpYZ:z\d+]] LessThanOrEqual [ [[ParamY]] [[ParamZ]] ] 15446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: [[CmpXYZ:z\d+]] Equal [ [[CmpXY]] [[CmpYZ]] ] 15546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil // CHECK-DAG: Return [ [[CmpXYZ]] ] 15646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 15746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil public static boolean ValuesOrdered(int x, int y, int z) { 15846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil return (x <= y) == (y <= z); 15946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil } 16046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil 161769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-START: int Main.NegatedCondition(boolean) boolean_simplifier (before) 162769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: [[Param:z\d+]] ParameterValue 163769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: [[Const42:i\d+]] IntConstant 42 164769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: [[Const43:i\d+]] IntConstant 43 165769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: [[NotParam:z\d+]] BooleanNot [ [[Param]] ] 166769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: If [ [[NotParam]] ] 167769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: [[Phi:i\d+]] Phi [ [[Const42]] [[Const43]] ] 168769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: Return [ [[Phi]] ] 169769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil 170769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-START: int Main.NegatedCondition(boolean) boolean_simplifier (after) 171769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: [[Param:z\d+]] ParameterValue 172769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: [[Const42:i\d+]] IntConstant 42 173769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: [[Const43:i\d+]] IntConstant 43 174769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: If [ [[Param]] ] 175769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: [[Phi:i\d+]] Phi [ [[Const42]] [[Const43]] ] 176769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-DAG: Return [ [[Phi]] ] 177769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil 178769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // Note: The fact that branches are swapped is verified by running the test. 179769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil 180769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-START: int Main.NegatedCondition(boolean) boolean_simplifier (after) 181769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil // CHECK-NOT: BooleanNot 182769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil 183769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil public static int NegatedCondition(boolean x) { 184769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil if (x != false) { 185769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil return 42; 186769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil } else { 187769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil return 43; 188769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil } 189769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil } 190769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil 19146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil public static void main(String[] args) { 19246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(false, BooleanNot(true)); 19346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(true, BooleanNot(false)); 19446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(true, GreaterThan(10, 5)); 19546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(false, GreaterThan(10, 10)); 19646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(false, GreaterThan(5, 10)); 19746e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(true, LessThan(5, 10)); 19846e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(false, LessThan(10, 10)); 19946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(false, LessThan(10, 5)); 20046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(true, ValuesOrdered(1, 3, 5)); 20146e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(true, ValuesOrdered(5, 3, 1)); 20246e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(false, ValuesOrdered(1, 3, 2)); 20346e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(false, ValuesOrdered(2, 3, 1)); 20446e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(true, ValuesOrdered(3, 3, 3)); 20546e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(true, ValuesOrdered(3, 3, 5)); 20646e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil assertBoolEquals(false, ValuesOrdered(5, 5, 3)); 207769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil assertIntEquals(42, NegatedCondition(true)); 208769c9e539da8ca80aa914cd12276aa5bd79148eeDavid Brazdil assertIntEquals(43, NegatedCondition(false)); 20946e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil } 21046e2a3915aa68c77426b71e95b9f3658250646b7David Brazdil} 211