@@ -2843,6 +2843,28 @@ TEST_F(LLVMCodeBuilderTest, VariablesAfterSuspend)
28432843 v = m_builder->addVariableValue (globalVar.get ());
28442844 m_builder->addFunctionCall (" test_print_string" , Compiler::StaticType::Void, { Compiler::StaticType::String }, { v });
28452845
2846+ v = m_builder->addConstValue (0 );
2847+ m_builder->createVariableWrite (localVar.get (), v);
2848+
2849+ m_builder->beginLoopCondition ();
2850+ v = m_builder->createCmpLT (m_builder->addVariableValue (localVar.get ()), m_builder->addConstValue (3 ));
2851+ m_builder->beginWhileLoop (v);
2852+ m_builder->endLoop ();
2853+
2854+ v = m_builder->addVariableValue (localVar.get ());
2855+ m_builder->addFunctionCall (" test_print_string" , Compiler::StaticType::Void, { Compiler::StaticType::String }, { v });
2856+
2857+ v = m_builder->addConstValue (0 );
2858+ m_builder->createVariableWrite (localVar.get (), v);
2859+
2860+ m_builder->beginLoopCondition ();
2861+ v = m_builder->createCmpEQ (m_builder->addVariableValue (localVar.get ()), m_builder->addConstValue (2 ));
2862+ m_builder->beginRepeatUntilLoop (v);
2863+ m_builder->endLoop ();
2864+
2865+ v = m_builder->addVariableValue (localVar.get ());
2866+ m_builder->addFunctionCall (" test_print_string" , Compiler::StaticType::Void, { Compiler::StaticType::String }, { v });
2867+
28462868 std::string expected =
28472869 " hello world\n "
28482870 " -4.8\n " ;
@@ -2876,6 +2898,41 @@ TEST_F(LLVMCodeBuilderTest, VariablesAfterSuspend)
28762898 testing::internal::CaptureStdout ();
28772899 code->run (ctx.get ());
28782900 ASSERT_EQ (testing::internal::GetCapturedStdout (), " true\n " );
2901+ ASSERT_FALSE (code->isFinished (ctx.get ()));
2902+
2903+ localVar->setValue (1 );
2904+
2905+ testing::internal::CaptureStdout ();
2906+ code->run (ctx.get ());
2907+ ASSERT_EQ (testing::internal::GetCapturedStdout (), " " );
2908+ ASSERT_FALSE (code->isFinished (ctx.get ()));
2909+
2910+ localVar->setValue (" 2" );
2911+
2912+ testing::internal::CaptureStdout ();
2913+ code->run (ctx.get ());
2914+ ASSERT_EQ (testing::internal::GetCapturedStdout (), " " );
2915+ ASSERT_FALSE (code->isFinished (ctx.get ()));
2916+
2917+ localVar->setValue (3 );
2918+
2919+ testing::internal::CaptureStdout ();
2920+ code->run (ctx.get ());
2921+ ASSERT_EQ (testing::internal::GetCapturedStdout (), " 3\n " );
2922+ ASSERT_FALSE (code->isFinished (ctx.get ()));
2923+
2924+ localVar->setValue (1 );
2925+
2926+ testing::internal::CaptureStdout ();
2927+ code->run (ctx.get ());
2928+ ASSERT_EQ (testing::internal::GetCapturedStdout (), " " );
2929+ ASSERT_FALSE (code->isFinished (ctx.get ()));
2930+
2931+ localVar->setValue (2 );
2932+
2933+ testing::internal::CaptureStdout ();
2934+ code->run (ctx.get ());
2935+ ASSERT_EQ (testing::internal::GetCapturedStdout (), " 2\n " );
28792936}
28802937
28812938TEST_F (LLVMCodeBuilderTest, ListsAfterSuspend)
0 commit comments