diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2011-02-02 17:42:26 -0500 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2011-02-02 17:42:26 -0500 | 
| commit | 84a402adf181165b4fef0ab8f1c0e63cc81a57ee (patch) | |
| tree | e1d37c0140177e6c8c462d87e8a3e05fd43de4d2 /indra/llcommon | |
| parent | 63f81d59f6e736c5fdd30d8297d64d1677987d3c (diff) | |
Add test to call no-args functions using (map | array)-style calls
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/tests/lleventdispatcher_test.cpp | 43 | 
1 files changed, 40 insertions, 3 deletions
| diff --git a/indra/llcommon/tests/lleventdispatcher_test.cpp b/indra/llcommon/tests/lleventdispatcher_test.cpp index 2f2188a121..63a130a94b 100644 --- a/indra/llcommon/tests/lleventdispatcher_test.cpp +++ b/indra/llcommon/tests/lleventdispatcher_test.cpp @@ -1017,7 +1017,7 @@ namespace tut      }      // Cannot be defined inside function body... remind me again why we use C++...  :-P -    struct Triple +    struct CallablesTriple      {          std::string name, name_req;          LLSD& llsd; @@ -1027,7 +1027,7 @@ namespace tut      void object::test<16>()      {          set_test_name("call Callables"); -        Triple tests[] = +        CallablesTriple tests[] =          {              { "free1",     "free1_req",     g.llsd },              { "Dmethod1",  "Dmethod1_req",  work.llsd }, @@ -1041,7 +1041,8 @@ namespace tut          // LLSD value matching 'required' according to llsd_matches() rules.          LLSD matching(LLSDMap("d", 3.14)("array", LLSDArray("answer")(true)(answer)));          // Okay, walk through 'tests'. -        for (const Triple *ti(boost::begin(tests)), *tend(boost::end(tests)); ti != tend; ++ti) +        for (const CallablesTriple *ti(boost::begin(tests)), *tend(boost::end(tests)); +             ti != tend; ++ti)          {              // Should be able to pass 'answer' to Callables registered              // without 'required'. @@ -1076,4 +1077,40 @@ namespace tut          call_exc("free0_map", 17, map_exc);          call_exc("free0_map", LLSDArray("a")("b"), map_exc);      } + +    struct FunctionsTriple +    { +        std::string name_array, name_map; +        Vars& vars; +    }; + +    template<> template<> +    void object::test<18>() +    { +        set_test_name("call no-args functions"); +        FunctionsTriple tests[] = +        { +            { "free0_array",    "free0_map",    g }, +            { "smethod0_array", "smethod0_map", g }, +            { "method0_array",  "method0_map",  v } +        }; +        for (const FunctionsTriple *ti(boost::begin(tests)), *tend(boost::end(tests)); +             ti != tend; ++ti) +        { +            // Both the global and stack Vars instances are automatically +            // cleared at the start of each test<n> method. But since we're +            // calling these things several different times in the same +            // test<n> method, manually reset the Vars between each. +            ti->vars = Vars(); +            ensure_equals(ti->vars.i, 0); +            // array-style call with empty array (or LLSD(), should be equivalent) +            work(ti->name_array, LLSD()); +            ensure_equals(ti->vars.i, 17); +             +            ti->vars = Vars(); +            // map-style call with empty map (or LLSD(), should be equivalent) +            work(ti->name_map, LLSD()); +            ensure_equals(ti->vars.i, 17); +        } +    }  } // namespace tut | 
