Web Wispers 1.2.1 C++ Unit Test Coverage
Current view: top level - tests/wispers/lua - LuaTest.cc (source / functions) Hit Total Coverage
Test: Web Wispers 1.2.1 C++ Unit Tests Lines: 134 134 100.0 %
Date: 2011-11-11 Functions: 17 18 94.4 %
Branches: 778 1560 49.9 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * Copyright 2006-2009 Savarese Software Research Corporation
       3                 :            :  *
       4                 :            :  * Licensed under the Apache License, Version 2.0 (the "License");
       5                 :            :  * you may not use this file except in compliance with the License.
       6                 :            :  * You may obtain a copy of the License at
       7                 :            :  *
       8                 :            :  *     http://www.savarese.com/software/ApacheLicense-2.0
       9                 :            :  *
      10                 :            :  * Unless required by applicable law or agreed to in writing, software
      11                 :            :  * distributed under the License is distributed on an "AS IS" BASIS,
      12                 :            :  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      13                 :            :  * See the License for the specific language governing permissions and
      14                 :            :  * limitations under the License.
      15                 :            :  */
      16                 :            : 
      17                 :            : #include <tests/TestCommon.h>
      18                 :            : #include <ssrc/wispers/fcgi/parameter_map.h>
      19                 :            : #include <ssrc/wispers/lua/lua.h>
      20                 :            : #include <ssrc/wispers/lua/map.h>
      21                 :            : 
      22                 :            : using namespace NS_SSRC_WSPR_LUA;
      23                 :            : 
      24         [ -  + ]:         15 : class LuaTest : public TestCase {
      25                 :            : 
      26                 :            :   lua_State *_state;
      27                 :            : 
      28                 :            : public:
      29                 :            : 
      30                 :          5 :   virtual void setUp() {
      31                 :          5 :     _state = luaL_newstate();
      32                 :          5 :   }
      33                 :            : 
      34                 :          5 :   virtual void tearDown() {
      35                 :          5 :     lua_close(_state);
      36                 :          5 :   }
      37                 :            : 
      38                 :          1 :   void test_get_value() {
      39   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(luaL_dofile(_state, TEST_LUA) == 0);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  -  +  +  
          -  +  -  +  -  
          +  -  +  -  +  
                      - ]
      40   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "wspr", "test", "string") == "/tmp");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
      41   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<int>(_state, "wspr", "test", "int") == 12);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      42   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<bool>(_state, "wspr", "test", "bool") == true);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      43   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "wspr", "test", "foo") == "");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
      44   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<int>(_state, "wspr", "test", "foo") == 0);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      45   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<bool>(_state, "wspr", "test", "foo") == false);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      46   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "wspr", "foo", "string") == "");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
      47   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<int>(_state, "wspr", "foo", "int") == 0);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      48   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<bool>(_state, "wspr", "foo", "bool") == false);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      49   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "foo", "test", "string") == "");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
      50   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<int>(_state, "foo", "test", "int") == 0);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      51   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<bool>(_state, "foo", "test", "bool") == false);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      52                 :          1 :   }
      53                 :            : 
      54                 :          1 :   void test_create_value() {
      55                 :          1 :     const bool b = true;
      56                 :          1 :     const int num = 1776;
      57         [ +  - ]:          2 :     const string str = "bar";
      58                 :          1 :     const char *ch   = "char";
      59                 :            : 
      60         [ +  - ]:          1 :     create_value(_state, b, "b");
      61         [ +  - ]:          1 :     create_value(_state, num, "num");
      62         [ +  - ]:          1 :     create_value(_state, str, "str");
      63         [ +  - ]:          1 :     create_value(_state, ch, "ch");
      64         [ +  - ]:          1 :     create_value(_state, "literal", "cch");
      65                 :            : 
      66   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<bool>(_state, "b") == b);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      67   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<int>(_state, "num") == num);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      68   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "str") == str);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
      69   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "ch") == ch);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
      70   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "cch") == "literal");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
      71                 :            : 
      72                 :            :     // create_value creates an entirely new set of tables, so you have
      73                 :            :     // to assert conditions immediately after each call, or the previous
      74                 :            :     // values will be lost.
      75         [ +  - ]:          1 :     create_value(_state, b, "a", "b", "c", "b");
      76   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<bool>(_state, "a", "b", "c", "b") == b);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      77                 :            : 
      78         [ +  - ]:          1 :     create_value(_state, num, "a", "b", "c","num");
      79   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<int>(_state, "a", "b", "c", "num") == num);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
      80                 :            : 
      81         [ +  - ]:          1 :     create_value(_state, str, "a", "b", "c", "str");
      82   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "a", "b", "c", "str") == str);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
      83                 :            : 
      84         [ +  - ]:          1 :     create_value(_state, ch, "a", "b", "c", "ch");
      85   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "a", "b", "c", "ch") == ch);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
      86                 :            : 
      87         [ +  - ]:          1 :     create_value(_state, "literal", "a", "b", "c", "cch");
      88   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "a", "b", "c", "cch") == "literal");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
      89                 :          1 :   }
      90                 :            : 
      91                 :          1 :   void test_set_value() {
      92                 :          1 :     const bool b = true;
      93                 :          1 :     const int num = 1776;
      94         [ +  - ]:          2 :     const string str = "bar";
      95                 :          1 :     const char *ch   = "char";
      96                 :            : 
      97         [ +  - ]:          1 :     set_value(_state, b, "b");
      98         [ +  - ]:          1 :     set_value(_state, num, "num");
      99         [ +  - ]:          1 :     set_value(_state, str, "str");
     100         [ +  - ]:          1 :     set_value(_state, ch, "ch");
     101         [ +  - ]:          1 :     set_value(_state, "literal", "cch");
     102                 :            : 
     103   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<bool>(_state, "b") == b);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
     104   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<int>(_state, "num") == num);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
     105   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "str") == str);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     106   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "ch") == ch);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     107   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "cch") == "literal");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     108                 :            : 
     109         [ +  - ]:          1 :     create_value(_state, b, "a", "b", "c", "b");
     110         [ +  - ]:          1 :     set_value(_state, num, "a", "b", "c","num");
     111         [ +  - ]:          1 :     set_value(_state, str, "a", "b", "c", "str");
     112         [ +  - ]:          1 :     set_value(_state, ch, "a", "b", "c", "ch");
     113         [ +  - ]:          1 :     set_value(_state, "literal", "a", "b", "c", "cch");
     114                 :            : 
     115   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<bool>(_state, "a", "b", "c", "b") == b);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
     116   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<int>(_state, "a", "b", "c", "num") == num);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
     117   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "a", "b", "c", "str") == str);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     118   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "a", "b", "c", "ch") == ch);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     119   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_value<string>(_state, "a", "b", "c", "cch") == "literal");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     120                 :          1 :   }
     121                 :            : 
     122                 :          1 :   void test_set_field() {
     123                 :          1 :     const bool b = true;
     124                 :          1 :     const int num = 1776;
     125         [ +  - ]:          2 :     const string str = "bar";
     126                 :          1 :     const char *ch   = "char";
     127                 :            : 
     128         [ +  - ]:          1 :     lua_newtable(_state);
     129                 :            : 
     130         [ +  - ]:          1 :     set_field(_state, -1, b, "b");
     131         [ +  - ]:          1 :     set_field(_state, -1, num, "num");
     132         [ +  - ]:          1 :     set_field(_state, -1, str, "str");
     133         [ +  - ]:          1 :     set_field(_state, -1, ch, "ch");
     134         [ +  - ]:          1 :     set_field(_state, -1, "literal", "cch");
     135                 :            : 
     136   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<bool>(_state, -1, "b") == b);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
     137   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<int>(_state, -1, "num") == num);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
     138   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, "str") == str);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     139   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, "ch") == ch);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     140   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, "cch") == "literal");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     141                 :            : 
     142         [ +  - ]:          1 :     set_field(_state, -1, b, "a", "b", "c", "b");
     143         [ +  - ]:          1 :     set_field(_state, -1, num, "a", "b", "c","num");
     144         [ +  - ]:          1 :     set_field(_state, -1, str, "a", "b", "c", "str");
     145         [ +  - ]:          1 :     set_field(_state, -1, ch, "a", "b", "c", "ch");
     146         [ +  - ]:          1 :     set_field(_state, -1, "literal", "a", "b", "c", "cch");
     147                 :            : 
     148   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<bool>(_state, -1, "a", "b", "c", "b") == b);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
     149   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<int>(_state, -1, "a", "b", "c", "num") == num);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
     150   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, "a", "b", "c", "str") == str);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     151   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, "a", "b", "c", "ch") == ch);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     152   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, "a", "b", "c", "cch") == "literal");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     153                 :            : 
     154         [ +  - ]:          1 :     lua_pop(_state, 1);
     155                 :          1 :   }
     156                 :            : 
     157                 :          1 :   void test_map_to_table() {
     158                 :            :     typedef NS_SSRC_WSPR_FCGI::parameter_map parameter_map;
     159                 :            :     typedef parameter_map::value_type value_type;
     160         [ +  - ]:          2 :     parameter_map map;
     161                 :            : 
     162         [ +  - ]:          1 :     luaL_openlibs(_state);
     163                 :            : 
     164   [ +  -  +  -  :          1 :     map.insert(value_type("a", "1"));
                   +  - ]
     165   [ +  -  +  -  :          1 :     map.insert(value_type("a", "2"));
                   +  - ]
     166   [ +  -  +  -  :          1 :     map.insert(value_type("a", "3"));
                   +  - ]
     167   [ +  -  +  -  :          1 :     map.insert(value_type("foo", "bar"));
                   +  - ]
     168   [ +  -  +  -  :          1 :     map.insert(value_type("bar", "foo"));
                   +  - ]
     169                 :            : 
     170         [ +  - ]:          1 :     map_to_table(_state, map);
     171                 :            : 
     172   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, "foo") == "bar");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     173   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, "bar") == "foo");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     174                 :            : 
     175         [ +  - ]:          1 :     lua_getglobal(_state, "table");
     176         [ +  - ]:          1 :     lua_getfield(_state, -1, "sort");
     177         [ +  - ]:          1 :     lua_getfield(_state, -3, "a");
     178                 :            : 
     179   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(lua_pcall(_state, 1, 0, 0) == 0);
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
     180                 :            : 
     181         [ +  - ]:          1 :     lua_pop(_state, 1);
     182         [ +  - ]:          1 :     lua_getfield(_state, -1, "a");
     183                 :            : 
     184   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(3u == lua_objlen(_state, -1));
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
             -  +  -  +  
                      - ]
     185   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, 1) == "1");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     186   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, 2) == "2");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     187   [ +  -  +  -  :          1 :     CPPUNIT_ASSERT(get_field<string>(_state, -1, 3) == "3");
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
             +  -  +  - ]
     188                 :            : 
     189         [ +  - ]:          1 :     lua_pop(_state, 2);
     190                 :          1 :   }
     191                 :            : 
     192   [ +  -  +  -  :          4 :   CPPUNIT_TEST_SUITE(LuaTest);
             +  -  #  # ]
     193   [ +  -  +  -  :          1 :   CPPUNIT_TEST(test_get_value);
          +  -  +  -  +  
          -  +  -  +  -  
                   +  - ]
     194   [ +  -  +  -  :          1 :   CPPUNIT_TEST(test_create_value);
          +  -  +  -  +  
          -  +  -  +  -  
                   +  - ]
     195   [ +  -  +  -  :          1 :   CPPUNIT_TEST(test_set_value);
          +  -  +  -  +  
          -  +  -  +  -  
                   +  - ]
     196   [ +  -  +  -  :          1 :   CPPUNIT_TEST(test_set_field);
          +  -  +  -  +  
          -  +  -  +  -  
                   +  - ]
     197   [ +  -  +  -  :          1 :   CPPUNIT_TEST(test_map_to_table);
          +  -  +  -  +  
          -  +  -  +  -  
                   +  - ]
     198   [ +  -  +  -  :          2 :   CPPUNIT_TEST_SUITE_END();
          +  -  +  -  +  
                -  +  - ]
     199                 :            : };
     200                 :            : 
     201   [ -  +  #  # ]:          1 : CPPUNIT_TEST_SUITE_REGISTRATION(LuaTest);
     202   [ +  -  +  -  :          4 : WISP_TEST_MAIN()
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
                -  +  - ]