BsScriptUnitTests.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Wrappers/BsScriptUnitTests.h"
  4. #include "BsScriptMeta.h"
  5. #include "BsMonoClass.h"
  6. #include "BsMonoMethod.h"
  7. #include "Scene/BsSceneObject.h"
  8. #include "Wrappers/BsScriptSceneObject.h"
  9. #include "Serialization/BsManagedSerializableObject.h"
  10. #include "Serialization/BsManagedSerializableDiff.h"
  11. namespace bs
  12. {
  13. MonoMethod* ScriptUnitTests::RunTestsMethod;
  14. SPtr<ManagedSerializableDiff> ScriptUnitTests::tempDiff;
  15. ScriptUnitTests::ScriptUnitTests(MonoObject* instance)
  16. :ScriptObject(instance)
  17. { }
  18. void ScriptUnitTests::initRuntimeData()
  19. {
  20. metaData.scriptClass->addInternalCall("Internal_UT1_GameObjectClone", (void*)&ScriptUnitTests::internal_UT1_GameObjectClone);
  21. metaData.scriptClass->addInternalCall("Internal_UT3_GenerateDiff", (void*)&ScriptUnitTests::internal_UT3_GenerateDiff);
  22. metaData.scriptClass->addInternalCall("Internal_UT3_ApplyDiff", (void*)&ScriptUnitTests::internal_UT3_ApplyDiff);
  23. RunTestsMethod = metaData.scriptClass->getMethod("RunTests");
  24. }
  25. void ScriptUnitTests::runTests()
  26. {
  27. RunTestsMethod->invoke(nullptr, nullptr);
  28. }
  29. void ScriptUnitTests::internal_UT1_GameObjectClone(MonoObject* instance)
  30. {
  31. ScriptSceneObject* nativeInstance = ScriptSceneObject::toNative(instance);
  32. HSceneObject SO = static_object_cast<SceneObject>(nativeInstance->getNativeHandle());
  33. HSceneObject cloneSO = SO->clone();
  34. cloneSO->setParent(SO);
  35. }
  36. void ScriptUnitTests::internal_UT3_GenerateDiff(MonoObject* oldObj, MonoObject* newObj)
  37. {
  38. SPtr<ManagedSerializableObject> serializableOldObj = ManagedSerializableObject::createFromExisting(oldObj);
  39. SPtr<ManagedSerializableObject> serializableNewObj = ManagedSerializableObject::createFromExisting(newObj);
  40. tempDiff = ManagedSerializableDiff::create(serializableOldObj.get(), serializableNewObj.get());
  41. }
  42. void ScriptUnitTests::internal_UT3_ApplyDiff(MonoObject* obj)
  43. {
  44. SPtr<ManagedSerializableObject> serializableObj = ManagedSerializableObject::createFromExisting(obj);
  45. tempDiff->apply(serializableObj);
  46. tempDiff = nullptr;
  47. }
  48. }