Add test to make sure simultaneous ChaiScript instantiations work
This commit is contained in:
parent
1155720b14
commit
f0016d978a
@ -200,6 +200,10 @@ if(BUILD_TESTING)
|
|||||||
target_link_libraries(set_state_test ${LIBS})
|
target_link_libraries(set_state_test ${LIBS})
|
||||||
add_test(NAME Set_State_Test COMMAND set_state_test)
|
add_test(NAME Set_State_Test COMMAND set_state_test)
|
||||||
|
|
||||||
|
add_executable(simultaneous_chaiscript_test unittests/simultaneous_chaiscript_test.cpp)
|
||||||
|
target_link_libraries(simultaneous_chaiscript_test ${LIBS})
|
||||||
|
add_test(NAME Simultaneous_Chaiscript_Test COMMAND simultaneous_chaiscript_test)
|
||||||
|
|
||||||
if (MULTITHREAD_SUPPORT_ENABLED)
|
if (MULTITHREAD_SUPPORT_ENABLED)
|
||||||
add_executable(multithreaded_test unittests/multithreaded_test.cpp)
|
add_executable(multithreaded_test unittests/multithreaded_test.cpp)
|
||||||
target_link_libraries(multithreaded_test ${LIBS})
|
target_link_libraries(multithreaded_test ${LIBS})
|
||||||
|
60
unittests/simultaneous_chaiscript_test.cpp
Normal file
60
unittests/simultaneous_chaiscript_test.cpp
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#include <chaiscript/chaiscript.hpp>
|
||||||
|
|
||||||
|
int dosomething(int i)
|
||||||
|
{
|
||||||
|
return i + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dosomethingelse(int i)
|
||||||
|
{
|
||||||
|
return i * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
chaiscript::ChaiScript chai;
|
||||||
|
chai.add(chaiscript::fun(&dosomething), "dosomething");
|
||||||
|
chai.add(chaiscript::var(1), "i");
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; ++i)
|
||||||
|
{
|
||||||
|
chaiscript::ChaiScript chai2;
|
||||||
|
chai2.add(chaiscript::fun(&dosomethingelse), "dosomethingelse");
|
||||||
|
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << i;
|
||||||
|
|
||||||
|
if (chai.eval<int>("dosomething(" + ss.str() + ")") != i + 2)
|
||||||
|
{
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chai2.eval<int>("dosomethingelse(" + ss.str() + ")") != i * 2)
|
||||||
|
{
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
chai2.eval("dosomething(1)");
|
||||||
|
return EXIT_FAILURE; // should not get here
|
||||||
|
} catch (const chaiscript::exception::eval_error &) {
|
||||||
|
// nothing to do, expected case
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
chai2.eval("i");
|
||||||
|
return EXIT_FAILURE; // should not get here
|
||||||
|
} catch (const chaiscript::exception::eval_error &) {
|
||||||
|
// nothing to do, expected case
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
chai.eval("dosomethingelse(1)");
|
||||||
|
return EXIT_FAILURE; // should not get here
|
||||||
|
} catch (const chaiscript::exception::eval_error &) {
|
||||||
|
// nothing to do, expected case
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user