@@ -42,6 +42,7 @@ TEST_F(RegisterPrimOpsTest, OpRegistered) {
4242 EXPECT_TRUE (hasOpsFn (" executorch_prim::sym_min.Scalar" ));
4343 EXPECT_TRUE (hasOpsFn (" executorch_prim::sym_not.Scalar" ));
4444 EXPECT_TRUE (hasOpsFn (" executorch_prim::sym_int.Scalar" ));
45+ EXPECT_TRUE (hasOpsFn (" executorch_prim::sym_ite.Scalar" ));
4546}
4647
4748TEST_F (RegisterPrimOpsTest, SymSizeReturnsCorrectValue) {
@@ -241,6 +242,46 @@ TEST_F(RegisterPrimOpsTest, SymIntReturnsCorrectValue) {
241242 EXPECT_EQ (stack[1 ]->toInt (), 0 );
242243}
243244
245+ TEST_F (RegisterPrimOpsTest, SymIteReturnsCorrectValue) {
246+ EValue values[4 ];
247+ EValue* stack[4 ];
248+ for (size_t i = 0 ; i < 4 ; i++) {
249+ stack[i] = &values[i];
250+ }
251+
252+ // true branch selects t (int)
253+ values[0 ] = EValue (true );
254+ values[1 ] = EValue ((int64_t )42 );
255+ values[2 ] = EValue ((int64_t )99 );
256+ values[3 ] = EValue ((int64_t )0 );
257+ getOpsFn (" executorch_prim::sym_ite.Scalar" )(context_, Span<EValue*>(stack));
258+ EXPECT_EQ (stack[3 ]->toInt (), 42 );
259+
260+ // false branch selects f (int)
261+ values[0 ] = EValue (false );
262+ values[1 ] = EValue ((int64_t )42 );
263+ values[2 ] = EValue ((int64_t )99 );
264+ values[3 ] = EValue ((int64_t )0 );
265+ getOpsFn (" executorch_prim::sym_ite.Scalar" )(context_, Span<EValue*>(stack));
266+ EXPECT_EQ (stack[3 ]->toInt (), 99 );
267+
268+ // true branch selects t (double)
269+ values[0 ] = EValue (true );
270+ values[1 ] = EValue (3.14 );
271+ values[2 ] = EValue (2.72 );
272+ values[3 ] = EValue (0.0 );
273+ getOpsFn (" executorch_prim::sym_ite.Scalar" )(context_, Span<EValue*>(stack));
274+ EXPECT_FLOAT_EQ (stack[3 ]->toDouble (), 3.14 );
275+
276+ // false branch selects f (bool)
277+ values[0 ] = EValue (false );
278+ values[1 ] = EValue (true );
279+ values[2 ] = EValue (false );
280+ values[3 ] = EValue (false );
281+ getOpsFn (" executorch_prim::sym_ite.Scalar" )(context_, Span<EValue*>(stack));
282+ EXPECT_EQ (stack[3 ]->toBool (), false );
283+ }
284+
244285TEST_F (RegisterPrimOpsTest, TestAlgebraOps) {
245286 EValue values[3 ];
246287 int64_t a = 3 ;
0 commit comments