Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TEST_CASE( "assignment of local variables", "[local_var]" )
- {
- using namespace sim;
- VM_Sim sim;
- vm_object_ind object0_ind = sim.addObject("object0");
- vm_script_ind script_event = 0;
- vm_var_ind var_a = sim.addVar("a");
- vm_var_ind var_b = sim.addVar("b");
- vm_var_ind var_c = sim.addVar("c");
- vm_var_ind var_d = sim.addVar("d");
- vm_var_ind var_e = sim.addVar("e");
- vm_var_ind var_f = sim.addVar("f");
- vm_var_ind var_g = sim.addVar("g");
- {
- Script s;
- // a = 123
- s.pushi_e(123);
- s.pop_v(var_a, DataType::i32);
- // b = 123456
- s.push_i(123456);
- s.pop_v(var_b, DataType::i32);
- // c = 0.5
- s.push_d(0.5);
- s.pop_v(var_c, DataType::f64);
- // d = true
- s.pushi_e(true);
- s.pop_v(var_d, DataType::i32);
- // e = a
- s.push_v(var_a);
- s.pop_v(var_e, DataType::variable);
- // f = b
- s.push_v(var_b);
- s.pop_v(var_f, DataType::variable);
- // g = c
- s.push_v(var_c);
- s.pop_v(var_g, DataType::variable);
- script_event = sim.addObjectEvent(
- object0_ind, EventType::create, std::move(s) );
- }
- vm_instance_id ins0 = sim.instanceCreate(object0_ind, 0, 0);
- //sim.printDisassembly(script_event);
- sim.run();
- REQUIRE( sim.readVar(ins0, var_a) == 123 );
- REQUIRE( sim.readVar(ins0, var_b) == 123456 );
- REQUIRE( sim.readVar(ins0, var_c) == 0.5 );
- REQUIRE( sim.readVar(ins0, var_d) == true );
- REQUIRE( sim.readVar(ins0, var_e) == 123 );
- REQUIRE( sim.readVar(ins0, var_f) == 123456 );
- REQUIRE( sim.readVar(ins0, var_g) == 0.5 );
- }
- TEST_CASE( "scoped variables", "[scoped_var]" )
- {
- using namespace sim;
- VM_Sim sim;
- vm_object_ind object0_ind = sim.addObject("object0");
- vm_script_ind script_event = 0;
- vm_var_ind var_a = sim.addVar("a");
- vm_var_ind var_b = sim.addVar("b");
- vm_var_ind var_c = sim.addVar("c");
- // Important: the var keyword is not order dependant,
- // so we can't have at the same time a local and a scoped
- // variable with the same name.
- // The scope is not a block, it's the full script.
- {
- Script s;
- // a = 123
- s.pushi_e(123);
- s.pop_v(var_a, DataType::i32);
- // var b; b = 321
- s.pushi_e(321);
- s.pop_v(var_b, DataType::i32, InstanceType::Local);
- // c = b
- s.push_v(var_b, InstanceType::Local);
- s.pop_v(var_c, DataType::variable);
- script_event = sim.addObjectEvent(
- object0_ind, EventType::create, std::move(s) );
- }
- vm_instance_id ins0 = sim.instanceCreate(object0_ind, 0, 0);
- //sim.printDisassembly(script_event);
- sim.run();
- REQUIRE( sim.readVar(ins0, var_a) == 123 );
- REQUIRE( sim.variableExists(ins0, var_b) == false );
- REQUIRE( sim.readVar(ins0, var_c) == 321 );
- }
- TEST_CASE( "global variables", "[global_var]" )
- {
- using namespace sim;
- VM_Sim sim;
- vm_object_ind object0_ind = sim.addObject("object0");
- vm_object_ind object1_ind = sim.addObject("object1");
- vm_script_ind script_event = 0;
- vm_var_ind var_a = sim.addVar("a");
- vm_var_ind var_b = sim.addVar("b");
- {
- Script s;
- // global.a = 123
- s.pushi_e(123);
- s.pop_v(var_a, DataType::i32, InstanceType::Global);
- // b = global.a
- s.pushg_v(var_a, InstanceType::Global);
- s.pop_v(var_b, DataType::variable);
- script_event = sim.addObjectEvent(
- object0_ind, EventType::create, std::move(s) );
- }
- {
- Script s;
- // a = global.a
- s.pushg_v(var_a, InstanceType::Global);
- s.pop_v(var_a, DataType::variable);
- script_event = sim.addObjectEvent(
- object1_ind, EventType::create, std::move(s) );
- }
- vm_instance_id ins0 = sim.instanceCreate(object0_ind, 0, 0);
- vm_instance_id ins1 = sim.instanceCreate(object1_ind, 0, 0);
- //sim.printDisassembly(script_event);
- sim.run();
- REQUIRE( sim.readVar(ins0, var_b) == 123 );
- REQUIRE( sim.readVar(ins1, var_a) == 123 );
- }
- TEST_CASE( "instances variables", "[ins_var]" )
- {
- using namespace sim;
- VM_Sim sim;
- vm_object_ind object0_ind = sim.addObject("object0");
- vm_object_ind object1_ind = sim.addObject("object1");
- vm_script_ind script_event = 0;
- vm_var_ind var_a = sim.addVar("a");
- vm_var_ind var_b = sim.addVar("b");
- vm_var_ind var_ins = sim.addVar("ins");
- {
- Script s;
- // a = 321
- s.pushi_e(321);
- s.pop_v(var_a, DataType::i32);
- script_event = sim.addObjectEvent(
- object0_ind, EventType::create, std::move(s) );
- }
- vm_instance_id ins0 = sim.instanceCreate(object0_ind, 0, 0);
- {
- Script s;
- // ins = 'ins0'
- s.push_i(ins0);
- s.pop_v(var_ins, DataType::i32);
- // ins.a = 123
- s.pushi_e(31415);
- s.push_v(var_ins);
- s.conv(DataType::variable, DataType::i32);
- s.pop_v(var_a, DataType::i32,
- InstanceType::StackTopOrGlobal, VariableType::StackTop);
- // b = ins.a
- s.push_v(var_ins);
- s.conv(DataType::variable, DataType::i32);
- s.push_v(0, InstanceType::StackTopOrGlobal);
- s.pop_v(var_b, DataType::variable);
- script_event = sim.addObjectEvent(
- object1_ind, EventType::create, std::move(s) );
- }
- vm_instance_id ins1 = sim.instanceCreate(object1_ind, 0, 0);
- //sim.printDisassembly(script_event);
- sim.run();
- REQUIRE( sim.readVar(ins0, var_a) == 31415 );
- REQUIRE( sim.variableExists(ins1, var_a) == false );
- REQUIRE( sim.readVar(ins1, var_b) == 31415 );
- REQUIRE( sim.readVar(ins1, var_ins) == ins0 );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement