LSL Library Call Test 2

From Second Life Wiki
Revision as of 06:45, 6 August 2008 by Si Linden (talk | contribs) (Added a handful of missing ll functions)
Jump to navigation Jump to search


  • 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("llGetInventoryKey"); keyResult = llGetInventoryKey("foo");
    test("llAllowInventoryDrop"); llAllowInventoryDrop(42);
    test("llGetSunDirection"); vectorResult = llGetSunDirection();
    test("llGetTextureOffset"); vectorResult = llGetTextureOffset(42);
    test("llGetTextureScale"); vectorResult = llGetTextureScale(42);
    test("llGetTextureRot"); floatResult = llGetTextureRot(42);
    test("llSubStringIndex"); integerResult = llSubStringIndex("foo", "foo");
    test("llGetOwnerKey"); keyResult = llGetOwnerKey(NULL_KEY);
    test("llGetCenterOfMass"); vectorResult = llGetCenterOfMass();
    test("llGetListLength"); integerResult = llGetListLength([3]);
    test("llList2Integer"); integerResult = llList2Integer([3], 42);
    test("llList2Float"); floatResult = llList2Float([3], 42);
    test("llList2String"); stringResult = llList2String([3], 42);
    test("llList2Key"); keyResult = llList2Key([3], 42);
    test("llList2Vector"); vectorResult = llList2Vector([3], 42);
    test("llList2Rot"); rotationResult = llList2Rot([3], 42);
    test("llCSV2List"); listResult = llCSV2List("foo");
    test("llGetRegionCorner"); vectorResult = llGetRegionCorner();
    test("llGetObjectName"); stringResult = llGetObjectName();
    test("llSetObjectName"); llSetObjectName("foo");
    test("llGetDate"); stringResult = llGetDate();
    test("llEdgeOfWorld"); integerResult = llEdgeOfWorld(<1.1,2.2,3.3>, <1.1,2.2,3.3>);
    test("llGetAgentInfo"); integerResult = llGetAgentInfo(NULL_KEY);
    test("llAdjustSoundVolume"); llAdjustSoundVolume(0.5);
    test("llSetSoundQueueing"); llSetSoundQueueing(42);
    test("llSetSoundRadius"); llSetSoundRadius(0.5);
    test("llKey2Name"); stringResult = llKey2Name(NULL_KEY);
    test("llSetTextureAnim"); llSetTextureAnim(42, 42, 42, 42, 0.5, 0.5, 0.5);
    test("llTriggerSoundLimited"); llTriggerSoundLimited("foo", 0.5, <1.1,2.2,3.3>, <1.1,2.2,3.3>);
    test("llEjectFromLand"); llEjectFromLand(NULL_KEY);
    test("llOverMyLand"); integerResult = llOverMyLand(NULL_KEY);
    test("llGetLandOwnerAt"); keyResult = llGetLandOwnerAt(<1.1,2.2,3.3>);
    test("llGetNotecardLine"); keyResult = llGetNotecardLine("foo", 42);
    test("llGetAgentSize"); vectorResult = llGetAgentSize(NULL_KEY);
    test("llSameGroup"); integerResult = llSameGroup(NULL_KEY);
    test("llUnSit"); llUnSit(NULL_KEY);
    test("llGroundSlope"); vectorResult = llGroundSlope(<1.1,2.2,3.3>);
    test("llGroundNormal"); vectorResult = llGroundNormal(<1.1,2.2,3.3>);
    test("llGroundContour"); vectorResult = llGroundContour(<1.1,2.2,3.3>);
    test("llGetAttached"); integerResult = llGetAttached();
    test("llGetFreeMemory"); integerResult = llGetFreeMemory();
    test("llGetRegionName"); stringResult = llGetRegionName();
    test("llGetRegionTimeDilation"); floatResult = llGetRegionTimeDilation();
    test("llGetRegionFPS"); floatResult = llGetRegionFPS();
    test("llGroundRepel"); llGroundRepel(0.5, 42, 0.5);
    test("llScriptDanger"); integerResult = llScriptDanger(<1.1,2.2,3.3>);
    test("llSetVehicleType"); llSetVehicleType(42);
    test("llSetVehicleFloatParam"); llSetVehicleFloatParam(42, 0.5);
    test("llSetVehicleVectorParam"); llSetVehicleVectorParam(42, <1.1,2.2,3.3>);
    test("llSetVehicleRotationParam"); llSetVehicleRotationParam(42, <1.1,2.2,3.3,4.4>);
    test("llSetVehicleFlags"); llSetVehicleFlags(42);
    test("llRemoveVehicleFlags"); llRemoveVehicleFlags(42);
    test("llSitTarget"); llSitTarget(<1.1,2.2,3.3>, <1.1,2.2,3.3,4.4>);
    test("llAvatarOnSitTarget"); keyResult = llAvatarOnSitTarget();
    test("llAddToLandPassList"); llAddToLandPassList(NULL_KEY, 0.5);
    test("llSetTouchText"); llSetTouchText("foo");
    test("llSetSitText"); llSetSitText("foo");
    test("llSetCameraEyeOffset"); llSetCameraEyeOffset(<1.1,2.2,3.3>);
    test("llSetCameraAtOffset"); llSetCameraAtOffset(<1.1,2.2,3.3>);
    test("llVolumeDetect"); llVolumeDetect(42);
    test("llResetOtherScript"); llResetOtherScript("foo");
    test("llGetScriptState"); integerResult = llGetScriptState("foo");
    test("llRemoteLoadScript"); llRemoteLoadScript(NULL_KEY, "foo", 42, 42);
    test("llOpenRemoteDataChannel"); llOpenRemoteDataChannel();
    test("llSendRemoteData"); keyResult = llSendRemoteData(NULL_KEY, "foo", 42, "foo");
    test("llRemoteDataReply"); llRemoteDataReply(NULL_KEY, NULL_KEY, "foo", 42);
    test("llCloseRemoteDataChannel"); llCloseRemoteDataChannel(NULL_KEY);
    test("llMD5String"); stringResult = llMD5String("foo", 42);
    test("llStringToBase64"); stringResult = llStringToBase64("foo");
    test("llBase64ToString"); stringResult = llBase64ToString("foo");
    test("llXorBase64Strings"); stringResult = llXorBase64Strings("foo", "foo");
    test("llSetRemoteScriptAccessPin"); llSetRemoteScriptAccessPin(42);
    test("llRemoteLoadScriptPin"); llRemoteLoadScriptPin(NULL_KEY, "foo", 42, 42, 42);
    test("llRemoteDataSetRegion"); llRemoteDataSetRegion();
    test("llLog10"); floatResult = llLog10(0.5);
    test("llLog"); floatResult = llLog(0.5);
    test("llSetParcelMusicURL"); llSetParcelMusicURL("foo");
    test("llGetRootPosition"); vectorResult = llGetRootPosition();
    test("llGetRootRotation"); rotationResult = llGetRootRotation();
    test("llGetObjectDesc"); stringResult = llGetObjectDesc();
    test("llSetObjectDesc"); llSetObjectDesc("foo");
    test("llGetCreator"); keyResult = llGetCreator();
    test("llGetTimestamp"); stringResult = llGetTimestamp();
    test("llSetLinkAlpha"); llSetLinkAlpha(42, 0.5, 42);
    test("llGetNumberOfPrims"); integerResult = llGetNumberOfPrims();
    test("llGetNumberOfNotecardLines"); keyResult = llGetNumberOfNotecardLines("foo");
    test("llGetBoundingBox"); listResult = llGetBoundingBox(NULL_KEY);
    test("llGetGeometricCenter"); vectorResult = llGetGeometricCenter();
    test("llIntegerToBase64"); stringResult = llIntegerToBase64(42);
    test("llBase64ToInteger"); integerResult = llBase64ToInteger("foo");
    test("llGetGMTclock"); floatResult = llGetGMTclock();
    test("llGetSimulatorHostname"); stringResult = llGetSimulatorHostname();
    test("llSetLocalRot"); llSetLocalRot(<1.1,2.2,3.3,4.4>);
    test("llRezAtRoot"); llRezAtRoot("foo", <1.1,2.2,3.3>, <1.1,2.2,3.3>, <1.1,2.2,3.3,4.4>, 42);
    test("llGetObjectPermMask"); integerResult = llGetObjectPermMask(42);
    //test("llSetObjectPermMask"); llSetObjectPermMask(42,42);
    test("llGetInventoryPermMask"); integerResult = llGetInventoryPermMask("foo", 42);
    //test("llSetInventoryPermMask"); llSetInventoryPermMask("foo", 42, 42);
    test("llOwnerSay"); llOwnerSay("foo");
    test("llGetInventoryCreator"); keyResult = llGetInventoryCreator("foo");
    test("llRequestSimulatorData"); keyResult = llRequestSimulatorData("foo", 42);
    test("llForceMouselook"); llForceMouselook(42);
    test("llGetObjectMass"); floatResult = llGetObjectMass(NULL_KEY);
    test("llLoadURL"); llLoadURL(NULL_KEY, "foo", "foo");
    test("llModPow"); integerResult = llModPow(42, 42, 42);
    test("llGetInventoryType"); integerResult = llGetInventoryType("foo");
    test("llGetCameraPos"); vectorResult = llGetCameraPos();
    test("llGetCameraRot"); rotationResult = llGetCameraRot();
    test("llSetPrimURL"); llSetPrimURL("foo");
    test("llRefreshPrimURL"); llRefreshPrimURL();
    test("llEscapeURL"); stringResult = llEscapeURL("foo");
    test("llUnescapeURL"); stringResult = llUnescapeURL("foo");
    test("llMapDestination"); llMapDestination("foo", <1.1,2.2,3.3>, <1.1,2.2,3.3>);
    test("llAddToLandBanList"); llAddToLandBanList(NULL_KEY, 0.5);
    test("llRemoveFromLandPassList"); llRemoveFromLandPassList(NULL_KEY);
    test("llRemoveFromLandBanList"); llRemoveFromLandBanList(NULL_KEY);
    test("llResetLandBanList"); llResetLandBanList();
    test("llResetLandPassList"); llResetLandPassList();
    test("llClearCameraParams"); llClearCameraParams();
    test("llGetUnixTime"); integerResult = llGetUnixTime();
    test("llGetParcelFlags"); integerResult = llGetParcelFlags(<1.1,2.2,3.3>);
    test("llGetRegionFlags"); integerResult = llGetRegionFlags();
    test("llGetObjectPrimCount"); integerResult = llGetObjectPrimCount(NULL_KEY);
    test("llGetParcelPrimOwners"); listResult = llGetParcelPrimOwners(<1.1,2.2,3.3>); 
    test("llGetParcelPrimCount"); integerResult = llGetParcelPrimCount(<1.1,2.2,3.3>, 42, 42);
    test("llGetParcelMaxPrims"); integerResult = llGetParcelMaxPrims(<1.1,2.2,3.3>, 42);
    test("llSetLinkTexture"); llSetLinkTexture(42, "foo", 42);
    test("llStringTrim"); stringResult = llStringTrim("foo", 42);
    test("llRegionSay"); llRegionSay(42, "foo");
    test("llListSort"); listResult = llListSort([3], 42, 42);
    test("llList2List"); listResult = llList2List([3], 42, 42);
    test("llDeleteSubList"); listResult = llDeleteSubList([3], 42, 42);
    test("llGetListEntryType"); integerResult = llGetListEntryType([3], 42);
    test("llList2CSV"); stringResult = llList2CSV([3]);
    test("llListRandomize"); listResult = llListRandomize([3], 42);
    test("llList2ListStrided"); listResult = llList2ListStrided([3], 42, 42, 42);
    test("llListInsertList"); listResult = llListInsertList([3], [3], 42);
    test("llListFindList"); integerResult = llListFindList([3], [3]);
    test("llParseString2List"); listResult = llParseString2List("foo", [3], [3]);
    test("llParticleSystem"); llParticleSystem([3]);
    test("llGiveInventoryList"); llGiveInventoryList(NULL_KEY, "foo", [3]);
    test("llDumpList2String"); stringResult = llDumpList2String([3], "foo");
    test("llDialog"); llDialog(NULL_KEY, "foo", [3], 42);
    test("llSetPrimitiveParams"); llSetPrimitiveParams([3]);
    test("llGetPrimitiveParams"); listResult = llGetPrimitiveParams([3]);
    test("llParseStringKeepNulls"); listResult = llParseStringKeepNulls("foo", [3], [3]);
    test("llListReplaceList"); listResult = llListReplaceList([3], [3], 42, 42);
    test("llParcelMediaCommandList"); llParcelMediaCommandList([3]);
    test("llParcelMediaQuery"); listResult = llParcelMediaQuery([3]);
    test("llSetPayPrice"); llSetPayPrice(42, [3]);
    test("llSetCameraParams"); llSetCameraParams([3]);
    test("llListStatistics"); floatResult = llListStatistics(42, [3]);
    test("llGetParcelDetails"); listResult = llGetParcelDetails(<1.1,2.2,3.3>, [3]);
    test("llSetLinkPrimitiveParams"); llSetLinkPrimitiveParams(42, [3]);
    test("llGetObjectDetails"); listResult = llGetObjectDetails(NULL_KEY, [3]);
    test("llGetRegionAgentCount"); integerResult = llGetRegionAgentCount();
    test("llTextBox"); llTextBox(NULL_KEY, "hello text box", 0);
    test("llGetAgentLanguage"); stringResult = llGetAgentLanguage(NULL_KEY);
    test("llDetectedTouchUV"); vectorResult = llDetectedTouchUV(0);
    test("llDetectedTouchST"); vectorResult = llDetectedTouchST(0);
    test("llDetectedTouchFace"); integerResult = llDetectedTouchFace(0);
    test("llDetectedTouchPos"); vectorResult = llDetectedTouchPos(0);
    test("llDetectedTouchNormal"); vectorResult = llDetectedTouchNormal(0);
    test("llDetectedTouchBinormal"); vectorResult = llDetectedTouchBinormal(0);
}

default
{
    touch_start(integer total_number)
    {
        llResetTime();
        tests();
        llSay(0, "Ran " + (string) gTests + " tests in " + (string) llGetTime() + " seconds");
        gTests = 0;
    }
}