datablockTest.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. }
  20. TEST(DatablockTest, Datablocks_Must_Not_Change_Type)
  21. {
  22. Con::EvalResult result = Con::evaluatef(R"(
  23. datablock SimDataBlock(testDb) {
  24. foo = 2;
  25. };
  26. datablock ParticleData(testDb) {
  27. foo = 3;
  28. };
  29. return testDb.foo;
  30. )", false, "datablockTest.cpp");
  31. // Not a syntax error
  32. ASSERT_TRUE(result.valid);
  33. // Did not override the datablock
  34. EXPECT_STREQ(result.value, "2");
  35. }
  36. TEST(DatablockTest, Datablock_Can_Substitute_String)
  37. {
  38. Con::EvalResult result = Con::evaluatef(R"(
  39. datablock ParticleData(testDb) {
  40. lifetimeMS = "$$ %%%%.bar";
  41. };
  42. $simObj = new GameBase(testObj) {
  43. bar = 1234;
  44. };
  45. return "done";
  46. )", false, "datablockTest.cpp");
  47. EXPECT_TRUE(result.valid);
  48. EXPECT_STREQ(result.value, "done");
  49. ParticleData* testDb = NULL;
  50. Sim::findObject("testDb", testDb);
  51. GameBase* testObj = NULL;
  52. Sim::findObject("testObj", testObj);
  53. testDb->performSubstitutions(testDb, testObj);
  54. EXPECT_EQ(testDb->lifetimeMS, 1234);
  55. }