TestUnit MATH Binary Operators.lsl

From Second Life Wiki
Revision as of 11:25, 31 March 2010 by Vektor Linden (talk | contribs)
Jump to navigation Jump to search


<lsl> /////////////////////////////////////////////////////////////////////////////////// /////// /////// /////// /////// TestUnit_TestScript /////// /////// MATH_BinaryOperators /////// /////// This is the test script for the data types. /////// /////// Created by Vektor Linden /////// //////////////////////////////////////////////////////////////////////////////////////

//TestUnit_TestScript .1 -> initial framework 6.23.2007 //TestUnit_TestScript .2 -> tested with minor bug fixes 7.2.2007

//BinaryOperators .3 -> Formal creation of script 2/18/10


////////////////////////////////////////////////////////////////////////////////////// // // Command Protocol // ////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////// // CHAT commands ////////////////////////////////////////////// // // Chat commands will be on the specified broadcastChannel // //////// OUTPUT /////////// // // AddUnitReport - send Report update to Coordinator on the chat broadcastChannel // format example -> AddUnitReport::unitKey::00000-0000-0000-00000::Report::Successful Completion of Test // ////////////////////////////////////////////// // LINK MESSAGE commands ////////////////////////////////////////////// // // link message commands will be sent out on the toAllChannel, and recieved on the passFailChannel // //////// INPUT /////////// // // RunTest - activation command to start test // format example -> RunTest // // Report - channel and report type // format example -> Report::controlChannel::0::reportType::NORMAL // // Reset - rest the scripts // format example -> Reset // //////// OUTPUT /////////// // // passFail - status of test sent on passFailChannel // format example -> PASS // //////////////////////////////////////////////////////////////////////////////////////////


// Global Variables

integer toAllChannel = -255; // general channel - linked message integer passFailChannel = -355; // test scripts channel for cummunicating pass/fail - linked message

integer debug = 0; // level of debug message integer debugChannel = DEBUG_CHANNEL; // output channel for debug messages


integer ArithmeticAddition_PASS; // These are global pass/fail integer ArithmeticSubtraction_PASS; // indicators for the various integer ArithmeticMultiplication_PASS; // Data Types that are integer ArithmeticDivision_PASS; // being tested. These variables integer ArithmeticModulo_PASS; // are used in the Run Test and integer ArithmeticGreaterThan_PASS; // Report Functions of this script. integer ArithmeticLessThan_PASS; integer ArithmeticGreaterThanOrEqualTo_PASS; integer ArithmeticLessThanOrEqualTo_PASS; integer LogicalInequality_PASS; integer LogicalEquality_PASS; integer LogicalAND_PASS; integer LogicalOR_PASS; integer BitwiseAND_PASS; integer BitwiseOR_PASS; integer BitwiseLeftShift_PASS; integer BitwiseRightShift_PASS; integer BitwiseExclusiveOR_PASS;

////////////////////////////////////////////////////////////////////////////////////////////////// ////////// ////////// Function: ParseCommand ////////// ////////// Input: string message - command to be parsed ////////// ////////// Output: no return value ////////// ////////// Purpose: This function calls various other functions or sets globals ////////// depending on message string. Allows external command calls. ////////// ////////// Issues: no known issues ////////// ////////// ///////////////////////////////////////////////////////////////////////////////////////////////// ParseCommand(string message) {

   if(debug > 1)llSay(debugChannel, llGetScriptName()+ "->ParseCommand: " + message);
       
   //reset all scripts 
   if(message == "Reset")
   {
       //reset this script 
       llResetScript();                   
   }
   
   //RunTest()
   else if(message == "RunTest")
   {
       RunTest();
   }
   //Report()
   //Example format -> Report::broadcastChannel::0::reportType::NORMAL
   else if( llSubStringIndex(message, "Report") != -1 )
   {
       //parse the string command into a list
       list reportParameters = llParseString2List( message, ["::"], [""] );
       
       //find the broadcastChannel label and increment by one
       integer tempIndex = llListFindList( reportParameters, ["controlChannel"] ) + 1;
       //pull the broadcastChannel from the list with the index just calculated
       integer controlChannel = llList2Integer( reportParameters , tempIndex);
       
       //find the reportType label and increment by one
       tempIndex = llListFindList( reportParameters, ["reportType"] ) + 1;
       //pull the reportType from the list with the index just calculated
       string reportType = llList2String( reportParameters , tempIndex);
               
       //call the Report function with new parameters
       Report( controlChannel, reportType );
   }
   
   
   

} //end ParseCommand


////////////////////////////////////////////////////////////////////////////////////////////////// ////////// ////////// Function: RunTest ////////// ////////// Input: no input paramaters ////////// ////////// Output: link message on passFailChannel test status ////////// ////////// Purpose: This function is where you put the scripts that you want to test ////////// with this unit. ////////// ////////// Issues: no known issues ////////// ////////// ///////////////////////////////////////////////////////////////////////////////////////////////// RunTest() {

       // initialize PASS variable        
       ArithmeticAddition_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.        
       if (1 + 1 == 2)
       {
           ArithmeticAddition_PASS = 1;
       }
       
       // initialize PASS variable        
       ArithmeticSubtraction_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.        
       if (1 - 1 == 0)
       {
           ArithmeticSubtraction_PASS = 1;
       }
       
       // initialize PASS variable        
       ArithmeticMultiplication_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.        
       if (2 * 2 == 4)
       {
           ArithmeticMultiplication_PASS = 1;
       }
       
       // initialize PASS variable        
       ArithmeticDivision_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.
       if (4 / 2 == 2)
       {
           ArithmeticDivision_PASS = 1;
       }
       
       // initialize PASS variable        
       ArithmeticModulo_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.        
       if (5 % 2 == 1)
       {
           ArithmeticModulo_PASS = 1;
       }
       
       // initialize PASS variable
       ArithmeticGreaterThan_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.
       if (2 > 1)
       {
           ArithmeticGreaterThan_PASS = 1;
       }
       
       // initialize PASS variable
       ArithmeticLessThan_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.
       if (1 < 2)
       {
           ArithmeticLessThan_PASS = 1;
       }
               
       // initialize PASS variable        
       ArithmeticGreaterThanOrEqualTo_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.        
       if (2 >= 1)
       {
           if (1 >= 1)
           {
               ArithmeticGreaterThanOrEqualTo_PASS = 1;
           }
       }
       
       // initialize PASS variable        
       ArithmeticLessThanOrEqualTo_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.        
       if (1 <= 2)
       {
           if (1 <= 1)
           {
               ArithmeticLessThanOrEqualTo_PASS = 1;
           }
       }
       
       // initialize PASS variable        
       LogicalInequality_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.
       if (1 != 2)
       {
           LogicalInequality_PASS = 1;
       }
       
       // initialize PASS variable        
       LogicalEquality_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.
       if (1 == 1)
       {
           LogicalEquality_PASS = 1;
       }
               
       // initialize PASS variable        
       LogicalAND_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.        
       if (TRUE && TRUE == TRUE)
       {
           LogicalAND_PASS = 1;
       }
       
       // initialize PASS variable
       LogicalOR_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.
       if (TRUE || TRUE == TRUE)
       {
           LogicalOR_PASS = 1;
       }
       
       // initialize PASS variable
       BitwiseAND_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.
       if  (TRUE & TRUE == TRUE)
       {
           BitwiseAND_PASS = 1;
       }
       
       // initialize PASS variable        
       BitwiseOR_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.        
       if  (TRUE | TRUE == TRUE)
       {
           BitwiseOR_PASS = 1;
       }
       
       // initialize PASS variable        
       BitwiseLeftShift_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.        
       if (2 << 1 == 4)
       {
           BitwiseLeftShift_PASS = 1;
       }
       
       // initialize PASS variable        
       BitwiseRightShift_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.        
       if (2 >> 1 == 1)
       {
           BitwiseRightShift_PASS = 1;
       }
       
       // initialize PASS variable        
       BitwiseExclusiveOR_PASS = 0;
       // Compare data against criteria in GetType function, which returns an integer corresponding to the type.
       if (0 ^ 0 == 0)
       {
           if (0 ^ 1 == 1)
           {
               if (1 ^ 0 == 1)
               {
                   if (1 ^ 1 == 0)
                   {
                       BitwiseExclusiveOR_PASS = 1;
                   }
               }
           }
       }
                                                            
    //check to see if any failures occured. 
       integer pass = ArithmeticAddition_PASS &
                      ArithmeticSubtraction_PASS &
                      ArithmeticMultiplication_PASS &
                      ArithmeticModulo_PASS &
                      ArithmeticDivision_PASS &
                      ArithmeticGreaterThan_PASS &
                      ArithmeticLessThan_PASS &
                      ArithmeticGreaterThanOrEqualTo_PASS &
                      ArithmeticLessThanOrEqualTo_PASS &
                      LogicalInequality_PASS &
                      LogicalEquality_PASS &
                      LogicalAND_PASS &
                      LogicalOR_PASS &
                      BitwiseAND_PASS &
                      BitwiseOR_PASS &
                      BitwiseLeftShift_PASS &                       
                      BitwiseRightShift_PASS &
                      BitwiseExclusiveOR_PASS;
                      
    // if all of the individual cases pass, test passes.                                
    if( pass )
    {
      llMessageLinked(LINK_SET, passFailChannel, "PASS", NULL_KEY);
    }
    else
    {
        llMessageLinked(LINK_SET, passFailChannel, "FAIL", NULL_KEY);
    }                              
                                                                     

}


////////////////////////////////////////////////////////////////////////////////////////////////// ////////// ////////// Function: Report ////////// ////////// Input: broadcastChannel - chat channel to send report ////////// reportType - determines length and content of report type ////////// -> NORMAL - failures and summary information ////////// -> QUIET - summary information only ////////// -> VERBOSE - everything ////////// ////////// Output: llSay on broadcastChannel ////////// ////////// Purpose: This function is where you design the three level of reports ////////// avaliable upon request by the Coordinator ////////// ////////// Issues: no known issues ////////// ////////// ///////////////////////////////////////////////////////////////////////////////////////////////// Report( integer controlChannel, string reportType ) {

   //this string will be sent out reguardless of reporting mode
   string reportString;
   
   // PASS or FAIL wording for the report
   string ArithmeticAddition_PASSstring = "FAIL";
   string ArithmeticSubtraction_PASSstring = "FAIL";
   string ArithmeticMultiplication_PASSstring = "FAIL";
   string ArithmeticDivision_PASSstring = "FAIL";
   string ArithmeticModulo_PASSstring = "FAIL";
   string ArithmeticGreaterThan_PASSstring = "FAIL";
   string ArithmeticLessThan_PASSstring = "FAIL";
   string ArithmeticGreaterThanOrEqualTo_PASSstring = "FAIL";
   string ArithmeticLessThanOrEqualTo_PASSstring = "FAIL";
   string LogicalInequality_PASSstring = "FAIL";
   string LogicalEquality_PASSstring = "FAIL";
   string LogicalAND_PASSstring = "FAIL";
   string LogicalOR_PASSstring = "FAIL";
   string BitwiseAND_PASSstring = "FAIL";  
   string BitwiseOR_PASSstring = "FAIL";
   string BitwiseLeftShift_PASSstring = "FAIL";
   string BitwiseRightShift_PASSstring = "FAIL";
   string BitwiseExclusiveOR_PASSstring = "FAIL";
   
   //translate integer conditional into text string for the report. 
   if ( ArithmeticAddition_PASS )
   {
         ArithmeticAddition_PASSstring = "PASS";
   }
   if ( ArithmeticSubtraction_PASS )
   {
         ArithmeticSubtraction_PASSstring = "PASS";
   }
   if ( ArithmeticMultiplication_PASS )
   {
         ArithmeticMultiplication_PASSstring = "PASS";
   }
   if ( ArithmeticDivision_PASS  )
   {
         ArithmeticDivision_PASSstring = "PASS";
   }
   if ( ArithmeticModulo_PASS )
   {
         ArithmeticModulo_PASSstring = "PASS";
   }
   if ( ArithmeticGreaterThan_PASS )
   {
         ArithmeticGreaterThan_PASSstring = "PASS";
   }
   if ( ArithmeticLessThan_PASS )
   {
         ArithmeticLessThan_PASSstring = "PASS";
   }   
   if ( ArithmeticGreaterThanOrEqualTo_PASS )
   {
         ArithmeticGreaterThanOrEqualTo_PASSstring = "PASS";
   }
   if ( ArithmeticLessThanOrEqualTo_PASS )
   {
         ArithmeticLessThanOrEqualTo_PASSstring = "PASS";
   }
   if ( LogicalInequality_PASS )
   {
         LogicalInequality_PASSstring = "PASS";
   }
   if ( LogicalEquality_PASS  )
   {
         LogicalEquality_PASSstring = "PASS";
   }
   if ( LogicalAND_PASS )
   {
         LogicalAND_PASSstring = "PASS";
   }
   if ( LogicalOR_PASS )
   {
         LogicalOR_PASSstring = "PASS";
   }
   if ( BitwiseAND_PASS )
   {
         BitwiseAND_PASSstring = "PASS";
   }   
   if ( BitwiseOR_PASS )
   {
         BitwiseOR_PASSstring = "PASS";
   }
   if ( BitwiseLeftShift_PASS )
   {
         BitwiseLeftShift_PASSstring = "PASS";
   }
   if ( BitwiseRightShift_PASS )
   {
         BitwiseRightShift_PASSstring = "PASS";
   }
   if ( BitwiseExclusiveOR_PASS  )
   {
         BitwiseExclusiveOR_PASSstring = "PASS";
   }


   //Normal - moderate level of reporting
   if( reportType == "NORMAL" )
   {
     reportString = "Type: ArithmeticAddition -> " 
                                               + ArithmeticAddition_PASSstring + "\n"
                  + "Type: ArithmeticSubtraction -> " 
                                               + ArithmeticSubtraction_PASSstring + "\n"
                  + "Type: ArithmeticMultiplication -> " 
                                               + ArithmeticMultiplication_PASSstring + "\n"
                  + "Type: ArithmeticDivision -> " 
                                               + ArithmeticDivision_PASSstring + "\n"
                  + "Type: ArithmeticModulo -> "
                                               + ArithmeticModulo_PASSstring + "\n"
                  + "Type: ArithmeticGreaterThan ->" 
                                               + ArithmeticGreaterThan_PASSstring + "\n"
                  + "Type: ArithmeticLessThan -> " 
                                               + ArithmeticLessThan_PASSstring + "\n"
                  + "Type: ArithmeticGreaterThanOrEqualTo -> " 
                                               + ArithmeticGreaterThanOrEqualTo_PASSstring + "\n"
                  + "Type: ArithmeticLessThanOrEqualTo -> " 
                                               + ArithmeticLessThanOrEqualTo_PASSstring + "\n"
                  + "Type: LogicalInequality -> "
                                               + LogicalInequality_PASSstring + "\n"
                  + "Type: LogicalEquality ->" 
                                               + LogicalEquality_PASSstring + "\n"
                  + "Type: LogicalAND -> " 
                                               + LogicalAND_PASSstring + "\n"
                  + "Type: LogicalOR -> " 
                                               + LogicalOR_PASSstring + "\n"
                  + "Type: BitwiseAND -> " 
                                               + BitwiseAND_PASSstring + "\n"
                  + "Type: BitwiseOR -> "
                                               + BitwiseOR_PASSstring + "\n"                                                                 + "Type: BitwiseLeftShift -> "
                                               + BitwiseLeftShift_PASSstring + "\n"                                           
                  + "Type: BitwiseRightShift -> "
                                               + BitwiseRightShift_PASSstring + "\n"
                  + "Type: BitwiseExclusiveOR ->" 
                                               + BitwiseExclusiveOR_PASSstring + "\n";
      
   } // end normal   
   
   //VERBOSE - highest level of reporting
   if( reportType == "VERBOSE" )
   {
            reportString = "///////////////////////////////////////////////////////////////////////////////////////////" + "\n"+
                "// Type: ArithmeticAddition" + "\n" +
               "// Returns an integer representing the integer type constant" + "\n" +
               "// • ArithmeticAddition = 1" + "\n" +
               "///////////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + ArithmeticAddition_PASSstring + "\n\n" +
    
               "///////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: ArithmeticSubtraction" + "\n" +
               "// Returns an integer representing the float type constant" + "\n" +
               "// • ArithmeticSubtraction = 2" + "\n" +
               "////////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + ArithmeticSubtraction_PASSstring + "\n\n" +
               
               "/////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: ArithmeticMultiplication" + "\n" +
               "// Returns an integer representing the string data type constant" + "\n" +
               "// • ArithmeticMultiplication = 3" + "\n" +
               "////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + ArithmeticMultiplication_PASSstring + "\n\n" +
                    
               "//////////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: ArithmeticDivision" + "\n" +
               "// Returns an integer representing the key data type constant" + "\n" +
               "// • ArithmeticDivision = 4" + "\n" +
               "/////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + ArithmeticDivision_PASSstring + "\n\n" +
                                    
               "///////////////////////////////////////////////////////////////////////////////////" + "\n" +    
               "// Type: ArithmeticModulo" + "\n" +
               "// Returns an integer representing the vector data type constant" + "\n" +
               "// • ArithmeticModulo = 5" + "\n" +
               "//////////////////////////////////////////////////////////////////////////////////" + "\n" +   
               "PASS/FAIL -> " + ArithmeticModulo_PASSstring + "\n\n" +
               
                "// Type: ArithmeticGreaterThan" + "\n" +
               "// Returns an integer representing the integer type constant" + "\n" +
               "// • ArithmeticGreaterThan = 1" + "\n" +
               "///////////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + ArithmeticGreaterThan_PASSstring + "\n\n" +
    
               "///////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: ArithmeticLessThan" + "\n" +
               "// Returns an integer representing the float type constant" + "\n" +
               "// • ArithmeticLessThan = 2" + "\n" +
               "////////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + ArithmeticLessThan_PASSstring + "\n\n" +
               
               "/////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: ArithmeticGreaterThanOrEqualTo" + "\n" +
               "// Returns an integer representing the string data type constant" + "\n" +
               "// • ArithmeticGreaterThanOrEqualTo = 3" + "\n" +
               "////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + ArithmeticGreaterThanOrEqualTo_PASSstring + "\n\n" +
                    
               "//////////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: ArithmeticLessThanOrEqualTo" + "\n" +
               "// Returns an integer representing the key data type constant" + "\n" +
               "// • ArithmeticLessThanOrEqualTo = 4" + "\n" +
               "/////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + ArithmeticLessThanOrEqualTo_PASSstring + "\n\n" +
               
               "///////////////////////////////////////////////////////////////////////////////////////////" + "\n" +
                "// Type: LogicalInequality" + "\n" +
               "// Returns an integer representing the integer type constant" + "\n" +
               "// • LogicalInequality = 1" + "\n" +
               "///////////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + LogicalInequality_PASSstring + "\n\n" +
    
               "///////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: LogicalEquality" + "\n" +
               "// Returns an integer representing the float type constant" + "\n" +
               "// • LogicalEquality = 2" + "\n" +
               "////////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + LogicalEquality_PASSstring + "\n\n" +
               
               "/////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: LogicalAND" + "\n" +
               "// Returns an integer representing the string data type constant" + "\n" +
               "// • LogicalAND = 3" + "\n" +
               "////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + LogicalAND_PASSstring + "\n\n" +
                    
               "//////////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: LogicalOR" + "\n" +
               "// Returns an integer representing the key data type constant" + "\n" +
               "// • LogicalOR = 4" + "\n" +
               "/////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + LogicalOR_PASSstring + "\n\n" +
                                    
               "/////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: BitwiseAND" + "\n" +
               "// Returns an integer representing the invalid data type constant" + "\n" +
               "// • BitwiseAND = 0" + "\n" +
               "/////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + BitwiseAND_PASSstring + "\n\n" +
    
               "///////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: BitwiseOR" + "\n" +
               "// Returns an integer representing the float type constant" + "\n" +
               "// • BitwiseOR = 2" + "\n" +
               "////////////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + BitwiseOR_PASSstring + "\n\n" +
               
               "/////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: BitwiseLeftShift" + "\n" +
               "// Returns an integer representing the string data type constant" + "\n" +
               "// • BitwiseLeftShift = 3" + "\n" +
               "////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + BitwiseLeftShift_PASSstring + "\n\n" +
                    
               "//////////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: BitwiseRightShift" + "\n" +
               "// Returns an integer representing the key data type constant" + "\n" +
               "// • BitwiseRightShift = 4" + "\n" +
               "/////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + BitwiseRightShift_PASSstring + "\n\n" +
                                    
               "/////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "// Type: BitwiseExclusiveOR" + "\n" +
               "// Returns an integer representing the invalid data type constant" + "\n" +
               "// • BitwiseExclusiveOR = 0" + "\n" +
               "/////////////////////////////////////////////////////////////////////////////////" + "\n" +
               "PASS/FAIL -> " + BitwiseExclusiveOR_PASSstring + "\n\n";                
       
   
   } // end verbose
       
   //AddUnitReport()
   //send to Coordinator on the broadcastChannel the selected report
   //format example -> AddUnitReport::unitKey::00000-0000-0000-00000::Report::Successful Completion of Test
   llSay( controlChannel, "AddUnitReport::unitKey::" + (string)llGetKey() + "::Report::" + reportString);

}


////////////////////////////////////////////////////////////////////////////////////////////////// ////////// ////////// Function: Initialize ////////// ////////// Input: no input paramaters ////////// ////////// Output: no return value ////////// ////////// Purpose: This function initializes any variables or functions necessary ////////// to get us started ////////// ////////// Issues: no known issues ////////// ////////// ///////////////////////////////////////////////////////////////////////////////////////////////// Initialize() {

   llSetText( "MATH_BinaryOperators", <255,255,255>, 1);

}


/////////////////////////////////////////////////////////////////////////////////////// //STATE STATE STATE STATE STATE STATE STATE STATE STATE STATE STATE STATE STATE STATE// /////////////////////////////////////////////////////////////////////////////////////// // // // // // DEFAULT STATE // // // // // /////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////// default { /////////////////////////////////////////////////////// // State Entry of default state // ///////////////////////////////////////////////////////

  state_entry()
   {
       Initialize();
   }

//////////////////////////////////////////////////////// // On Rez of default state // ////////////////////////////////////////////////////////

   on_rez(integer start_param)
   {
       Initialize();
   }


/////////////////////////////////////////////////////// // Link Message of default state // ///////////////////////////////////////////////////////

   link_message(integer sender_number, integer number, string message, key id)
   {
       //if link message is on the correct channel
       if(number == toAllChannel)
       {
           //treat as command input
           ParseCommand(message);
       }
       
   } //end of link message
   

} // end default

</lsl>