LSL Library Call Test 1

Category:Conformance Test
* Tests that LSL library functions are callable and that parameter and return types are correct
* Does NOT test library call semantics
* To run, rez a prim, add this script, then touch the prim
* On successful completion says "Ran 172 tests in 50 seconds"
* Test should take ~50s due to sleep and energy delays
* Generates multiple script errors due to erroneous parameters, these errors should be ignored
* For more verbose reporting uncomment llSay call in test()
 
integer gTests = 0;
 
test(string name)
{
 ++gTests;
 //llSay(0, name);
}
 
tests()
{
 float floatResult;
 integer integerResult;
 string stringResult;
 key keyResult;
 vector vectorResult;
 rotation rotationResult;
 list listResult;
 
 test("llSin"); floatResult = llSin(0.5);
 test("llCos"); floatResult = llCos(0.5);
 test("llTan"); floatResult = llTan(0.5);
 test("llAtan2"); floatResult = llAtan2(0.5, 0.5);
 test("llSqrt"); floatResult = llSqrt(0.5);
 test("llPow"); floatResult = llPow(0.5, 0.5);
 test("llAbs"); integerResult = llAbs(42);
 test("llFabs"); floatResult = llFabs(0.5);
 test("llFrand"); floatResult = llFrand(0.5);
 test("llFloor"); integerResult = llFloor(0.5);
 test("llCeil"); integerResult = llCeil(0.5);
 test("llRound"); integerResult = llRound(0.5);
 test("llVecMag"); floatResult = llVecMag(<1.1,2.2,3.3>);
 test("llVecNorm"); vectorResult = llVecNorm(<1.1,2.2,3.3>);
 test("llVecDist"); floatResult = llVecDist(<1.1,2.2,3.3>, <1.1,2.2,3.3>);
 test("llRot2Euler"); vectorResult = llRot2Euler(<1.1,2.2,3.3,4.4>);
 test("llEuler2Rot"); rotationResult = llEuler2Rot(<1.1,2.2,3.3>);
 test("llAxes2Rot"); rotationResult = llAxes2Rot(<1.1,2.2,3.3>, <1.1,2.2,3.3>, <1.1,2.2,3.3>);
 test("llRot2Fwd"); vectorResult = llRot2Fwd(<1.1,2.2,3.3,4.4>);
 test("llRot2Left"); vectorResult = llRot2Left(<1.1,2.2,3.3,4.4>);
 test("llRot2Up"); vectorResult = llRot2Up(<1.1,2.2,3.3,4.4>);
 test("llRotBetween"); rotationResult = llRotBetween(<1.1,2.2,3.3>, <1.1,2.2,3.3>);
 test("llWhisper"); llWhisper(42, "foo");
 test("llSay"); llSay(42, "foo");
 test("llShout"); llShout(42, "foo");
 test("llListen"); integerResult = llListen(42, "foo", NULL_KEY, "foo");
 test("llListenControl"); llListenControl(42, 42);
 test("llListenRemove"); llListenRemove(42);
 test("llSensor"); llSensor("foo", NULL_KEY, 42, 0.5, 0.5);
 test("llSensorRepeat"); llSensorRepeat("foo", NULL_KEY, 42, 0.5, 0.5, 0.5);
 test("llSensorRemove"); llSensorRemove();
 test("llDetectedName"); stringResult = llDetectedName(42);
 test("llDetectedKey"); keyResult = llDetectedKey(42);
 test("llDetectedOwner"); keyResult = llDetectedOwner(42);
 test("llDetectedType"); integerResult = llDetectedType(42);
 test("llDetectedPos"); vectorResult = llDetectedPos(42);
 test("llDetectedVel"); vectorResult = llDetectedVel(42);
 test("llDetectedGrab"); vectorResult = llDetectedGrab(42);
 test("llDetectedRot"); rotationResult = llDetectedRot(42);
 test("llDetectedGroup"); integerResult = llDetectedGroup(42);
 test("llDetectedLinkNumber"); integerResult = llDetectedLinkNumber(42);
 test("llDie"); //llDie();
 test("llGround"); floatResult = llGround(<1.1,2.2,3.3>);
 test("llCloud"); floatResult = llCloud(<1.1,2.2,3.3>);
 test("llWind"); vectorResult = llWind(<1.1,2.2,3.3>);
 test("llSetStatus"); llSetStatus(42, 42);
 test("llGetStatus"); integerResult = llGetStatus(42);
 test("llSetScale"); llSetScale(<1.1,2.2,3.3>);
 test("llGetScale"); vectorResult = llGetScale();
 test("llSetColor"); llSetColor(<1.1,2.2,3.3>, 42);
 test("llGetColor"); vectorResult = llGetColor(0);
 test("llSetAlpha"); llSetAlpha(0.5, 42);
 test("llGetAlpha"); floatResult = llGetAlpha(42);
 test("llSetTexture"); llSetTexture("foo", 42);
 test("llScaleTexture"); llScaleTexture(0.5, 0.5, 42);
 test("llOffsetTexture"); llOffsetTexture(0.5, 0.5, 42);
 test("llRotateTexture"); llRotateTexture(0.5, 42);
 test("llGetTexture"); stringResult = llGetTexture(42);
 test("llSetPos"); //llSetPos(<1.1,2.2,3.3>);
 test("llGetPos"); vectorResult = llGetPos();
 test("llGetLocalPos"); vectorResult = llGetLocalPos();
 test("llSetRot"); llSetRot(<1.1,2.2,3.3,4.4>);
 test("llGetRot"); rotationResult = llGetRot();
 test("llGetLocalRot"); rotationResult = llGetLocalRot();
 test("llSetForce"); llSetForce(<1.1,2.2,3.3>, 42);
 test("llGetForce"); vectorResult = llGetForce();
 test("llMoveToTarget"); llMoveToTarget(<1.1,2.2,3.3>, 0.5);
 test("llStopMoveToTarget"); llStopMoveToTarget();
 test("llTarget"); integerResult = llTarget(<1.1,2.2,3.3>, 0.5);
 test("llTargetRemove"); llTargetRemove(42);
 test("llRotTarget"); integerResult = llRotTarget(<1.1,2.2,3.3,4.4>, 0.5);
 test("llRotTargetRemove"); llRotTargetRemove(42);
 test("llApplyImpulse"); llApplyImpulse(<1.1,2.2,3.3>, 42);
 test("llApplyRotationalImpulse"); llApplyRotationalImpulse(<1.1,2.2,3.3>, 42);
 test("llSetTorque"); llSetTorque(<1.1,2.2,3.3>, 42);
 test("llGetTorque"); vectorResult = llGetTorque();
 test("llSetForceAndTorque"); llSetForceAndTorque(<1.1,2.2,3.3>, <1.1,2.2,3.3>, 42);
 test("llGetVel"); vectorResult = llGetVel();
 test("llGetAccel"); vectorResult = llGetAccel();
 test("llGetOmega"); vectorResult = llGetOmega();
 test("llGetTimeOfDay"); floatResult = llGetTimeOfDay();
 test("llGetWallclock"); floatResult = llGetWallclock();
 test("llGetTime"); floatResult = llGetTime();
 test("llResetTime"); //llResetTime();
 test("llGetAndResetTime"); //floatResult = llGetAndResetTime();
 test("llSound"); llSound("foo", 0.5, 42, 42);
 test("llPlaySound"); llPlaySound(NULL_KEY, 0.5);
 test("llLoopSound"); llLoopSound("foo", 0.5);
 test("llLoopSoundMaster"); llLoopSoundMaster("foo", 0.5);
 test("llLoopSoundSlave"); llLoopSoundSlave("foo", 0.5);
 test("llPlaySoundSlave"); llPlaySoundSlave("foo", 0.5);
 test("llTriggerSound"); llTriggerSound(NULL_KEY, 0.5);
 test("llStopSound"); llStopSound();
 test("llPreloadSound"); llPreloadSound("foo");
 test("llGetSubString"); stringResult = llGetSubString("foo", 42, 42);
 test("llDeleteSubString"); stringResult = llDeleteSubString("foo", 42, 42);
 test("llInsertString"); stringResult = llInsertString("foo", 42, "foo");
 test("llToUpper"); stringResult = llToUpper("foo");
 test("llToLower"); stringResult = llToLower("foo");
 test("llGiveMoney"); integerResult = llGiveMoney(NULL_KEY, 42);
 test("llMakeExplosion"); llMakeExplosion(42, 0.5, 0.5, 0.5, 0.5, "foo", <1.1,2.2,3.3>);
 test("llMakeFountain"); llMakeFountain(42, 0.5, 0.5, 0.5, 0.5, 1,"foo", <1.1,2.2,3.3>, 0);
 test("llMakeSmoke"); llMakeSmoke(42, 0.5, 0.5, 0.5, 0.5, "foo", <1.1,2.2,3.3>);
 test("llMakeFire"); llMakeFire(42, 0.5, 0.5, 0.5, 0.5, "foo", <1.1,2.2,3.3>);
 test("llRezObject"); llRezObject("foo", <1.1,2.2,3.3>, <1.1,2.2,3.3>, <1.1,2.2,3.3,4.4>, 42);
 test("llLookAt"); llLookAt(<1.1,2.2,3.3>, 0.5, 0.5);
 test("llStopLookAt"); llStopLookAt();
 test("llSetTimerEvent"); llSetTimerEvent(0.5);
 test("llSleep"); llSleep(0.5);
 test("llGetMass"); floatResult = llGetMass();
 test("llCollisionFilter"); llCollisionFilter("foo", NULL_KEY, 42);
 test("llTakeControls"); llTakeControls(42, 42, 42);
 test("llReleaseControls"); llReleaseControls();
 test("llAttachToAvatar"); llAttachToAvatar(42);
 test("llDetachFromAvatar"); llDetachFromAvatar();
 test("llGetOwner"); keyResult = llGetOwner();
 test("llInstantMessage"); llInstantMessage(NULL_KEY, "foo");
 test("llEmail"); llEmail("foo", "foo", "foo");
 test("llGetNextEmail"); llGetNextEmail("foo", "foo");
 test("llGetKey"); keyResult = llGetKey();
 test("llSetBuoyancy"); llSetBuoyancy(0.5);
 test("llSetHoverHeight"); llSetHoverHeight(0.5, 42, 0.5);
 test("llStopHover"); llStopHover();
 test("llMinEventDelay"); llMinEventDelay(0.5);
 test("llSoundPreload"); llSoundPreload(NULL_KEY);
 test("llRotLookAt"); llRotLookAt(<1.1,2.2,3.3,4.4>, 0.5, 0.5);
 test("llStringLength"); integerResult = llStringLength("foo");
 test("llStartAnimation"); llStartAnimation("foo");
 test("llStopAnimation"); llStopAnimation("foo");
 test("llPointAt"); llPointAt(<1.1,2.2,3.3>);
 test("llStopPointAt"); llStopPointAt();
 test("llTargetOmega"); llTargetOmega(<1.1,2.2,3.3>, 0.5, 0.5);
 test("llGetStartParameter"); integerResult = llGetStartParameter();
 //test("llGodLikeRezObject"); llGodLikeRezObject(NULL_KEY, <1.1,2.2,3.3>);
 test("llRequestPermissions"); llRequestPermissions(NULL_KEY, 42);
 test("llGetPermissionsKey"); keyResult = llGetPermissionsKey();
 test("llGetPermissions"); integerResult = llGetPermissions();
 test("llGetLinkNumber"); integerResult = llGetLinkNumber();
 test("llSetLinkColor"); llSetLinkColor(42, <1.1,2.2,3.3>, 42);
 test("llCreateLink"); llCreateLink(NULL_KEY, 42);
 test("llBreakLink"); llBreakLink(42);
 test("llLinks"); llBreakAllLinks();
 test("llGetLinkKey"); keyResult = llGetLinkKey(42);
 test("llGetLinkName"); stringResult = llGetLinkName(42);
 test("llGetInventoryNumber"); integerResult = llGetInventoryNumber(42);
 test("llGetInventoryName"); stringResult = llGetInventoryName(42, 42);
 test("llSetScriptState"); llSetScriptState("foo", 42);
 test("llGetEnergy"); floatResult = llGetEnergy();
 test("llGiveInventory"); llGiveInventory(NULL_KEY, "foo");
 test("llRemoveInventory"); llRemoveInventory("foo");
 test("llSetText"); llSetText("foo", <1.1,2.2,3.3>, 0.5);
 test("llWater"); floatResult = llWater(<1.1,2.2,3.3>);
 test("llPassTouches"); llPassTouches(42);
 test("llRequestAgentData"); keyResult = llRequestAgentData(NULL_KEY, 42);
 test("llRequestInventoryData"); keyResult = llRequestInventoryData("foo");
 test("llSetDamage"); llSetDamage(0.5);
 test("llTeleportAgentHome"); llTeleportAgentHome(NULL_KEY);
 test("llModifyLand"); llModifyLand(42, 42);
 test("llCollisionSound"); llCollisionSound("foo", 0.5);
 test("llCollisionSprite"); llCollisionSprite("foo");
 test("llGetAnimation"); stringResult = llGetAnimation(NULL_KEY);
 test("llGetAnimationList"); listResult = llGetAnimationList(NULL_KEY);
 //test("llResetScript"); llResetScript();
 test("llMessageLinked"); llMessageLinked(42, 42, "foo", NULL_KEY);
 test("llPushObject"); llPushObject(NULL_KEY, <1.1,2.2,3.3>, <1.1,2.2,3.3>, 42);
 test("llPassCollisions"); llPassCollisions(42);
 test("llGetScriptName"); stringResult = llGetScriptName();
 test("llGetNumberOfSides"); integerResult = llGetNumberOfSides();
 test("llAxisAngle2Rot"); rotationResult = llAxisAngle2Rot(<1.1,2.2,3.3>, 0.5);
 test("llRot2Axis"); vectorResult = llRot2Axis(<1.1,2.2,3.3,4.4>);
 test("llRot2Angle"); floatResult = llRot2Angle(<1.1,2.2,3.3,4.4>);
 test("llAcos"); floatResult = llAcos(0.5);
 test("llAsin"); floatResult = llAsin(0.5);
 test("llAngleBetween"); floatResult = llAngleBetween(<1.1,2.2,3.3,4.4>, <1.1,2.2,3.3,4.4>);
}
 
default
{
 touch_start(integer total_number)
 {
 llResetTime();
 tests();
 llSay(0, "Ran " + (string) gTests + " tests in " + (string) llGetTime() + " seconds");
 gTests = 0;
 }
}