2
0

datablockTest.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include <gtest/gtest.h>
  2. #include "console/script.h"
  3. #include "T3D/fx/particle.h"
  4. #include "T3D/gameBase/gameBase.h"
  5. TEST(DatablockTest, Datablocks_Can_Be_Overridden)
  6. {
  7. Con::EvalResult result = Con::evaluatef(R"(
  8. datablock SimDataBlock(testDb) {
  9. foo = 2;
  10. };
  11. datablock SimDataBlock(testDb) {
  12. foo = 3;
  13. };
  14. return testDb.foo;
  15. )", false, "datablockTest.cpp");
  16. ASSERT_TRUE(result.valid);
  17. // Successfully overrode the datablock
  18. EXPECT_STREQ(result.value, "3");
  19. // Cleanup
  20. result = Con::evaluatef(R"(
  21. testDb.delete();
  22. return "done";
  23. )", false, "datablockTest.cpp");
  24. // Cleanup succesful
  25. ASSERT_TRUE(result.valid);
  26. }
  27. TEST(DatablockTest, Datablocks_Must_Not_Change_Type)
  28. {
  29. Con::EvalResult result = Con::evaluatef(R"(
  30. datablock SimDataBlock(testDb) {
  31. foo = 2;
  32. };
  33. datablock ParticleData(testDb) {
  34. foo = 3;
  35. };
  36. return testDb.foo;
  37. )", false, "datablockTest.cpp");
  38. // Not a syntax error
  39. ASSERT_TRUE(result.valid);
  40. // Did not override the datablock
  41. EXPECT_STREQ(result.value, "2");
  42. // Cleanup
  43. result = Con::evaluatef(R"(
  44. testDb.delete();
  45. return "done";
  46. )", false, "datablockTest.cpp");
  47. // Cleanup succesful
  48. ASSERT_TRUE(result.valid);
  49. }
  50. TEST(DatablockTest, Datablock_Can_Substitute_String)
  51. {
  52. Con::EvalResult result = Con::evaluatef(R"(
  53. datablock ParticleData(testDb) {
  54. lifetimeMS = "$$ %%%%.bar";
  55. };
  56. $simObj = new GameBase(testObj) {
  57. bar = 1234;
  58. };
  59. return "done";
  60. )", false, "datablockTest.cpp");
  61. EXPECT_TRUE(result.valid);
  62. EXPECT_STREQ(result.value, "done");
  63. ParticleData* testDb = NULL;
  64. Sim::findObject("testDb", testDb);
  65. GameBase* testObj = NULL;
  66. Sim::findObject("testObj", testObj);
  67. testDb->performSubstitutions(testDb, testObj);
  68. EXPECT_EQ(testDb->lifetimeMS, 1234);
  69. // Cleanup
  70. testDb->deleteObject();
  71. testObj->deleteObject();
  72. }