Advertisement
onilink_

some unit tests

May 26th, 2020
1,507
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.22 KB | None | 0 0
  1.  
  2. TEST_CASE( "assignment of local variables", "[local_var]" )
  3. {
  4.     using namespace sim;
  5.    
  6.     VM_Sim sim;
  7.     vm_object_ind object0_ind = sim.addObject("object0");
  8.     vm_script_ind script_event = 0;
  9.    
  10.     vm_var_ind var_a = sim.addVar("a");
  11.     vm_var_ind var_b = sim.addVar("b");
  12.     vm_var_ind var_c = sim.addVar("c");
  13.     vm_var_ind var_d = sim.addVar("d");
  14.     vm_var_ind var_e = sim.addVar("e");
  15.     vm_var_ind var_f = sim.addVar("f");
  16.     vm_var_ind var_g = sim.addVar("g");
  17.    
  18.     {
  19.         Script s;
  20.        
  21.         // a = 123
  22.         s.pushi_e(123);
  23.         s.pop_v(var_a, DataType::i32);
  24.        
  25.         // b = 123456
  26.         s.push_i(123456);
  27.         s.pop_v(var_b, DataType::i32);
  28.        
  29.         // c = 0.5
  30.         s.push_d(0.5);
  31.         s.pop_v(var_c, DataType::f64);
  32.        
  33.         // d = true
  34.         s.pushi_e(true);
  35.         s.pop_v(var_d, DataType::i32);
  36.        
  37.         // e = a
  38.         s.push_v(var_a);
  39.         s.pop_v(var_e, DataType::variable);
  40.        
  41.         // f = b
  42.         s.push_v(var_b);
  43.         s.pop_v(var_f, DataType::variable);
  44.        
  45.         // g = c
  46.         s.push_v(var_c);
  47.         s.pop_v(var_g, DataType::variable);
  48.        
  49.         script_event = sim.addObjectEvent(
  50.                     object0_ind, EventType::create, std::move(s) );
  51.     }
  52.    
  53.     vm_instance_id ins0 = sim.instanceCreate(object0_ind, 0, 0);
  54.    
  55.     //sim.printDisassembly(script_event);
  56.     sim.run();
  57.    
  58.     REQUIRE( sim.readVar(ins0, var_a) == 123 );
  59.     REQUIRE( sim.readVar(ins0, var_b) == 123456 );
  60.     REQUIRE( sim.readVar(ins0, var_c) == 0.5 );
  61.     REQUIRE( sim.readVar(ins0, var_d) == true );
  62.     REQUIRE( sim.readVar(ins0, var_e) == 123 );
  63.     REQUIRE( sim.readVar(ins0, var_f) == 123456 );
  64.     REQUIRE( sim.readVar(ins0, var_g) == 0.5 );
  65. }
  66.  
  67. TEST_CASE( "scoped variables", "[scoped_var]" )
  68. {
  69.     using namespace sim;
  70.    
  71.     VM_Sim sim;
  72.     vm_object_ind object0_ind = sim.addObject("object0");
  73.     vm_script_ind script_event = 0;
  74.    
  75.     vm_var_ind var_a = sim.addVar("a");
  76.     vm_var_ind var_b = sim.addVar("b");
  77.     vm_var_ind var_c = sim.addVar("c");
  78.    
  79.     // Important: the var keyword is not order dependant,
  80.     // so we can't have at the same time a local and a scoped
  81.     // variable with the same name.
  82.     // The scope is not a block, it's the full script.
  83.    
  84.     {
  85.         Script s;
  86.        
  87.         // a = 123
  88.         s.pushi_e(123);
  89.         s.pop_v(var_a, DataType::i32);
  90.        
  91.         // var b; b = 321
  92.         s.pushi_e(321);
  93.         s.pop_v(var_b, DataType::i32, InstanceType::Local);
  94.        
  95.         // c = b
  96.         s.push_v(var_b, InstanceType::Local);
  97.         s.pop_v(var_c, DataType::variable);
  98.        
  99.         script_event = sim.addObjectEvent(
  100.                     object0_ind, EventType::create, std::move(s) );
  101.     }
  102.    
  103.     vm_instance_id ins0 = sim.instanceCreate(object0_ind, 0, 0);
  104.    
  105.     //sim.printDisassembly(script_event);
  106.     sim.run();
  107.    
  108.     REQUIRE( sim.readVar(ins0, var_a) == 123 );
  109.     REQUIRE( sim.variableExists(ins0, var_b) == false );
  110.     REQUIRE( sim.readVar(ins0, var_c) == 321 );
  111. }
  112.  
  113. TEST_CASE( "global variables", "[global_var]" )
  114. {
  115.     using namespace sim;
  116.    
  117.     VM_Sim sim;
  118.     vm_object_ind object0_ind = sim.addObject("object0");
  119.     vm_object_ind object1_ind = sim.addObject("object1");
  120.     vm_script_ind script_event = 0;
  121.    
  122.     vm_var_ind var_a = sim.addVar("a");
  123.     vm_var_ind var_b = sim.addVar("b");
  124.    
  125.     {
  126.         Script s;
  127.        
  128.         // global.a = 123
  129.         s.pushi_e(123);
  130.         s.pop_v(var_a, DataType::i32, InstanceType::Global);
  131.        
  132.         // b = global.a
  133.         s.pushg_v(var_a, InstanceType::Global);
  134.         s.pop_v(var_b, DataType::variable);
  135.        
  136.         script_event = sim.addObjectEvent(
  137.                     object0_ind, EventType::create, std::move(s) );
  138.     }
  139.    
  140.     {
  141.         Script s;
  142.        
  143.         // a = global.a
  144.         s.pushg_v(var_a, InstanceType::Global);
  145.         s.pop_v(var_a, DataType::variable);
  146.        
  147.         script_event = sim.addObjectEvent(
  148.                     object1_ind, EventType::create, std::move(s) );
  149.     }
  150.    
  151.     vm_instance_id ins0 = sim.instanceCreate(object0_ind, 0, 0);
  152.     vm_instance_id ins1 = sim.instanceCreate(object1_ind, 0, 0);
  153.    
  154.     //sim.printDisassembly(script_event);
  155.     sim.run();
  156.    
  157.     REQUIRE( sim.readVar(ins0, var_b) == 123 );
  158.     REQUIRE( sim.readVar(ins1, var_a) == 123 );
  159. }
  160.  
  161. TEST_CASE( "instances variables", "[ins_var]" )
  162. {
  163.     using namespace sim;
  164.    
  165.     VM_Sim sim;
  166.     vm_object_ind object0_ind = sim.addObject("object0");
  167.     vm_object_ind object1_ind = sim.addObject("object1");
  168.     vm_script_ind script_event = 0;
  169.    
  170.     vm_var_ind var_a = sim.addVar("a");
  171.     vm_var_ind var_b = sim.addVar("b");
  172.     vm_var_ind var_ins = sim.addVar("ins");
  173.    
  174.     {
  175.         Script s;
  176.        
  177.         // a = 321
  178.         s.pushi_e(321);
  179.         s.pop_v(var_a, DataType::i32);
  180.        
  181.         script_event = sim.addObjectEvent(
  182.                     object0_ind, EventType::create, std::move(s) );
  183.     }
  184.    
  185.     vm_instance_id ins0 = sim.instanceCreate(object0_ind, 0, 0);
  186.    
  187.     {
  188.         Script s;
  189.        
  190.         // ins = 'ins0'
  191.         s.push_i(ins0);
  192.         s.pop_v(var_ins, DataType::i32);
  193.        
  194.         // ins.a = 123
  195.         s.pushi_e(31415);
  196.         s.push_v(var_ins);
  197.         s.conv(DataType::variable, DataType::i32);
  198.         s.pop_v(var_a, DataType::i32,
  199.                 InstanceType::StackTopOrGlobal, VariableType::StackTop);
  200.        
  201.         // b = ins.a
  202.         s.push_v(var_ins);
  203.         s.conv(DataType::variable, DataType::i32);
  204.         s.push_v(0,  InstanceType::StackTopOrGlobal);
  205.         s.pop_v(var_b, DataType::variable);
  206.        
  207.         script_event = sim.addObjectEvent(
  208.                     object1_ind, EventType::create, std::move(s) );
  209.     }
  210.    
  211.    
  212.     vm_instance_id ins1 = sim.instanceCreate(object1_ind, 0, 0);
  213.    
  214.     //sim.printDisassembly(script_event);
  215.     sim.run();
  216.    
  217.     REQUIRE( sim.readVar(ins0, var_a) == 31415 );
  218.     REQUIRE( sim.variableExists(ins1, var_a) == false );
  219.     REQUIRE( sim.readVar(ins1, var_b) == 31415 );
  220.     REQUIRE( sim.readVar(ins1, var_ins) == ins0 );
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement