@@ -30,6 +30,7 @@ class LLVMCodeBuilderTest : public testing::Test
3030 Mul,
3131 Div,
3232 Random,
33+ RandomInt,
3334 CmpEQ,
3435 CmpGT,
3536 CmpLT,
@@ -98,6 +99,9 @@ class LLVMCodeBuilderTest : public testing::Test
9899 case OpType::Random:
99100 return m_builder->createRandom (arg1, arg2);
100101
102+ case OpType::RandomInt:
103+ return m_builder->createRandomInt (arg1, arg2);
104+
101105 case OpType::CmpEQ:
102106 return m_builder->createCmpEQ (arg1, arg2);
103107
@@ -203,6 +207,9 @@ class LLVMCodeBuilderTest : public testing::Test
203207 return v1.isInt () && v2.isInt () ? m_rng.randint (v1.toLong (), v2.toLong ()) : m_rng.randintDouble (v1.toDouble (), v2.toDouble ());
204208 }
205209
210+ case OpType::RandomInt:
211+ return m_rng.randint (v1.toLong (), v2.toLong ());
212+
206213 case OpType::CmpEQ:
207214 return v1 == v2;
208215
@@ -727,6 +734,41 @@ TEST_F(LLVMCodeBuilderTest, Random)
727734 runOpTest (OpType::Random, -inf, inf, nan);
728735}
729736
737+ TEST_F (LLVMCodeBuilderTest, RandomInt)
738+ {
739+ EXPECT_CALL (m_rng, randint (-45 , 12 )).Times (3 ).WillRepeatedly (Return (-18 ));
740+ runOpTest (OpType::RandomInt, -45 , 12 );
741+
742+ EXPECT_CALL (m_rng, randint (-45 , 12 )).Times (3 ).WillRepeatedly (Return (5 ));
743+ runOpTest (OpType::RandomInt, -45.0 , 12.0 );
744+
745+ EXPECT_CALL (m_rng, randint (12 , 6 )).Times (3 ).WillRepeatedly (Return (3 ));
746+ runOpTest (OpType::RandomInt, 12 , 6.05 );
747+
748+ EXPECT_CALL (m_rng, randint (-78 , -45 )).Times (3 ).WillRepeatedly (Return (-59 ));
749+ runOpTest (OpType::RandomInt, -78.686 , -45 );
750+
751+ EXPECT_CALL (m_rng, randint (-45 , 12 )).Times (3 ).WillRepeatedly (Return (0 ));
752+ runOpTest (OpType::RandomInt, " -45" , " 12" );
753+
754+ EXPECT_CALL (m_rng, randint (-45 , 12 )).Times (3 ).WillRepeatedly (Return (5 ));
755+ runOpTest (OpType::RandomInt, " -45.0" , " 12" );
756+
757+ EXPECT_CALL (m_rng, randint (-45 , 12 )).Times (3 ).WillRepeatedly (Return (-15 ));
758+ runOpTest (OpType::RandomInt, " -45" , " 12.0" );
759+
760+ EXPECT_CALL (m_rng, randint (0 , 1 )).Times (3 ).WillRepeatedly (Return (1 ));
761+ runOpTest (OpType::RandomInt, false , true );
762+
763+ EXPECT_CALL (m_rng, randint (1 , 5 )).Times (3 ).WillRepeatedly (Return (1 ));
764+ runOpTest (OpType::RandomInt, true , 5 );
765+
766+ EXPECT_CALL (m_rng, randint (8 , 0 )).Times (3 ).WillRepeatedly (Return (1 ));
767+ runOpTest (OpType::RandomInt, 8 , false );
768+
769+ // NOTE: Infinity, -Infinity and NaN behavior is undefined
770+ }
771+
730772TEST_F (LLVMCodeBuilderTest, EqualComparison)
731773{
732774 runOpTest (OpType::CmpEQ, 10 , 10 );
0 commit comments