ScriptCanvas_RuntimeInterpreted.cpp 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <AzCore/EBus/EBus.h>
  9. #include <AzCore/Math/MathReflection.h>
  10. #include <AzCore/RTTI/BehaviorContext.h>
  11. #include <AzCore/Serialization/SerializeContext.h>
  12. #include <ScriptCanvas/Core/EBusHandler.h>
  13. #include <ScriptCanvas/Core/SubgraphInterfaceUtility.h>
  14. #include <ScriptCanvas/Core/Nodeable.h>
  15. #include <ScriptCanvas/Execution/Interpreted/ExecutionInterpretedAPI.h>
  16. #include <Source/Framework/ScriptCanvasTestFixture.h>
  17. #include <Source/Framework/ScriptCanvasTestNodes.h>
  18. #include <Source/Framework/ScriptCanvasTestUtilities.h>
  19. #include <Source/ScriptCanvasTestBus.h>
  20. using namespace ScriptCanvas;
  21. using namespace ScriptCanvasTests;
  22. using namespace TestNodes;
  23. using namespace ScriptCanvas::Execution;
  24. using namespace ScriptCanvasEditor;
  25. class GlobalHandler : ScriptCanvasTesting::GlobalEBus::Handler
  26. {
  27. public:
  28. AZ_CLASS_ALLOCATOR(GlobalHandler, AZ::SystemAllocator);
  29. AZ::Event<> m_zeroParam;
  30. AZ::Event<AZStd::vector<AZStd::string>&> m_byReference;
  31. AZ::Event<int, bool, AZStd::string> m_byValue;
  32. GlobalHandler()
  33. {
  34. ScriptCanvasTesting::GlobalEBus::Handler::BusConnect();
  35. }
  36. AZStd::string AppendSweet(AZStd::string_view) override
  37. {
  38. AZStd::string result{};
  39. return result;
  40. }
  41. int Increment(int ) override
  42. {
  43. int result{};
  44. return result;
  45. }
  46. bool Not(bool ) override
  47. {
  48. bool result{};
  49. return result;
  50. }
  51. int Sum(int, int ) override
  52. {
  53. int result(0);
  54. return result;
  55. }
  56. void Void(AZStd::string_view) override
  57. {
  58. }
  59. AZ::Event<>* GetZeroParamEvent() override
  60. {
  61. return &m_zeroParam;
  62. }
  63. AZ::Event<AZStd::vector<AZStd::string>&>* GetByReferenceEvent() override
  64. {
  65. return &m_byReference;
  66. }
  67. AZ::Event<int, bool, AZStd::string>* GetByValueEvent() override
  68. {
  69. return &m_byValue;
  70. }
  71. };
  72. TEST_F(ScriptCanvasTestFixture, DISABLED_EntityIdInputForOnGraphStart)
  73. {
  74. ExpectParseError("LY_SC_UnitTest_EntityIdInputForOnGraphStart");
  75. }
  76. // disabled due to lack of confirming known null on nodes that are not BC method nodes
  77. TEST_F(ScriptCanvasTestFixture, DISABLED_ParseErrorOnKnownNull)
  78. {
  79. ExpectParseError("LY_SC_UnitTest_ParseErrorOnKnownNull");
  80. }
  81. TEST_F(ScriptCanvasTestFixture, UseBehaviorContextClassConstant)
  82. {
  83. RunUnitTestGraph("LY_SC_UnitTest_UseBehaviorContextClassConstant");
  84. }
  85. TEST_F(ScriptCanvasTestFixture, ParseFunctionIfBranchWithConnectedInput)
  86. {
  87. RunUnitTestGraph("LY_SC_UnitTest_ParseFunctionIfBranchWithConnectedInput");
  88. }
  89. TEST_F(ScriptCanvasTestFixture, UseRawBehaviorProperties)
  90. {
  91. RunUnitTestGraph("LY_SC_UnitTest_UseRawBehaviorProperties");
  92. }
  93. TEST_F(ScriptCanvasTestFixture, StringSanitization)
  94. {
  95. RunUnitTestGraph("LY_SC_UnitTest_StringSanitization");
  96. }
  97. TEST_F(ScriptCanvasTestFixture, InterpretedReadEnumConstant)
  98. {
  99. RunUnitTestGraph("LY_SC_UnitTest_ReadEnumConstant");
  100. }
  101. TEST_F(ScriptCanvasTestFixture, UserBranchSanityCheck)
  102. {
  103. RunUnitTestGraph("LY_SC_UnitTest_UserBranchSanityCheck");
  104. }
  105. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlerNoDisconnect)
  106. {
  107. GlobalHandler handler;
  108. ScriptCanvasEditor::RunSpec runSpec;
  109. runSpec.m_onPostSimulate = [&handler]()
  110. {
  111. AZStd::vector<AZStd::string> reference{ "one", "two", "three" };
  112. handler.m_byReference.Signal(reference);
  113. handler.m_byValue.Signal(7, true, "CCC");
  114. handler.m_zeroParam.Signal();
  115. };
  116. RunUnitTestGraph("LY_SC_UnitTest_EventHandlerNoDisconnect", runSpec);
  117. }
  118. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlerDisconnect)
  119. {
  120. GlobalHandler handler;
  121. ScriptCanvasEditor::RunSpec runSpec;
  122. runSpec.m_onPostSimulate = [&handler]()
  123. {
  124. AZStd::vector<AZStd::string> reference{ "one", "two", "three" };
  125. handler.m_byReference.Signal(reference);
  126. handler.m_byValue.Signal(7, true, "CCC");
  127. handler.m_zeroParam.Signal();
  128. };
  129. RunUnitTestGraph("LY_SC_UnitTest_EventHandlerDisconnect", runSpec);
  130. }
  131. TEST_F(ScriptCanvasTestFixture, FunctionLocalStaticsUnique)
  132. {
  133. RunUnitTestGraph("LY_SC_UnitTest_FunctionLocalStaticsUnique");
  134. }
  135. TEST_F(ScriptCanvasTestFixture, FunctionContainerInputTest)
  136. {
  137. RunUnitTestGraph("LY_SC_UnitTest_FunctionContainerInputTest");
  138. }
  139. TEST_F(ScriptCanvasTestFixture, InterpretedFixBoundMultipleResults)
  140. {
  141. RunUnitTestGraph("LY_SC_UnitTest_FixBoundMultipleResults");
  142. }
  143. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedDetectSelfDeactivation)
  144. {
  145. ExpectParseError("LY_SC_UnitTest_DetectSelfDeactivation");
  146. }
  147. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedDetectSelfDeactivationSequence)
  148. {
  149. ExpectParseError("LY_SC_UnitTest_DetectSelfDeactivationSequence");
  150. }
  151. TEST_F(ScriptCanvasTestFixture, InterpretedEraseFrontUntilEmpty)
  152. {
  153. RunUnitTestGraph("LY_SC_UnitTest_EraseFrontUntilEmpty");
  154. }
  155. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllAABBNodes)
  156. {
  157. RunUnitTestGraph("LY_SC_UnitTest_RunAllAABBNodes");
  158. }
  159. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllCRC32Nodes)
  160. {
  161. RunUnitTestGraph("LY_SC_UnitTest_RunAllCRC32Nodes");
  162. }
  163. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllColorNodes)
  164. {
  165. RunUnitTestGraph("LY_SC_UnitTest_RunAllColorNodes");
  166. }
  167. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllMatrix3x3Nodes)
  168. {
  169. RunUnitTestGraph("LY_SC_UnitTest_RunAllMatrix3x3Nodes");
  170. }
  171. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllMatrix4x4Nodes)
  172. {
  173. RunUnitTestGraph("LY_SC_UnitTest_RunAllMatrix4x4Nodes");
  174. }
  175. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllNumberNodes)
  176. {
  177. RunUnitTestGraph("LY_SC_UnitTest_RunAllNumberNodes");
  178. }
  179. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllOBBNodes)
  180. {
  181. RunUnitTestGraph("LY_SC_UnitTest_RunAllOBBNodes");
  182. }
  183. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllPlaneNodes)
  184. {
  185. RunUnitTestGraph("LY_SC_UnitTest_RunAllPlaneNodes");
  186. }
  187. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllQuaternionNodes)
  188. {
  189. RunUnitTestGraph("LY_SC_UnitTest_RunAllQuaternionNodes");
  190. }
  191. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllRandomNodes)
  192. {
  193. RunUnitTestGraph("LY_SC_UnitTest_RunAllRandomNodes");
  194. }
  195. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllTransformNodes)
  196. {
  197. RunUnitTestGraph("LY_SC_UnitTest_RunAllTransformNodes");
  198. }
  199. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllTrigonometryNodes)
  200. {
  201. RunUnitTestGraph("LY_SC_UnitTest_RunAllTrigonometryNodes");
  202. }
  203. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllVector2Nodes)
  204. {
  205. RunUnitTestGraph("LY_SC_UnitTest_RunAllVector2Nodes");
  206. }
  207. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllVector3Nodes)
  208. {
  209. RunUnitTestGraph("LY_SC_UnitTest_RunAllVector3Nodes");
  210. }
  211. TEST_F(ScriptCanvasTestFixture, InterpretedMathRunAllVector4Nodes)
  212. {
  213. RunUnitTestGraph("LY_SC_UnitTest_RunAllVector4Nodes");
  214. }
  215. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedSelfDeactivateParseError1)
  216. {
  217. ExpectParseError("LY_SC_UnitTest_SelfDeactivateParseError");
  218. }
  219. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedSelfDeactivateParseErrorFromHandler2)
  220. {
  221. ExpectParseError("LY_SC_UnitTest_SelfDeactivateParseErrorFromHandler");
  222. }
  223. TEST_F(ScriptCanvasTestFixture, InterpretedSelfDeactivateParse3)
  224. {
  225. ExpectParse("LY_SC_UnitTest_SelfDeactivateParse");
  226. }
  227. TEST_F(ScriptCanvasTestFixture, InterpretedSelfDeactivateParseFromHandler4)
  228. {
  229. ExpectParse("LY_SC_UnitTest_SelfDeactivateParseFromHandler");
  230. }
  231. TEST_F(ScriptCanvasTestFixture, InterpretedAddMatrix)
  232. {
  233. RunUnitTestGraph("LY_SC_UnitTest_AddMatrix");
  234. }
  235. TEST_F(ScriptCanvasTestFixture, InterpretedContainerEraseCheck)
  236. {
  237. RunUnitTestGraph("LY_SC_UnitTest_ContainerEraseCheck");
  238. }
  239. TEST_F(ScriptCanvasTestFixture, InterpretedChainedInfiniteLoop)
  240. {
  241. ScriptCanvasEditor::RunSpec spec;
  242. spec.release = false;
  243. spec.expectRuntimeFailure = true;
  244. RunUnitTestGraph("LY_SC_UnitTest_ChainedInfiniteLoop", spec);
  245. }
  246. TEST_F(ScriptCanvasTestFixture, InterpretedGetTimeAtCurrentTickRegression)
  247. {
  248. RunUnitTestGraph("LY_SC_UnitTest_GetTimeAtCurrentTickRegression");
  249. }
  250. TEST_F(ScriptCanvasTestFixture, InterpretedUnhandledEventReturnValueTypeChange)
  251. {
  252. RunUnitTestGraph("LY_SC_UnitTest_UnhandledEventReturnValueTypeChange");
  253. }
  254. TEST_F(ScriptCanvasTestFixture, InterpretedUnhandledEventReturnValueTypeChangeTuple)
  255. {
  256. RunUnitTestGraph("LY_SC_UnitTest_UnhandledEventReturnValueTypeChangeTuple");
  257. }
  258. TEST_F(ScriptCanvasTestFixture, NodeableDurationFunction)
  259. {
  260. ExpectParse("LY_SC_UnitTest_NodeableDurationFunction");
  261. }
  262. TEST_F(ScriptCanvasTestFixture, LatentCallOfPureUserFunction)
  263. {
  264. RunUnitTestGraph("LY_SC_UnitTest_LatentCallOfPureUserFunction", ExecutionMode::Interpreted, DurationSpec::Ticks(3));
  265. }
  266. TEST_F(ScriptCanvasTestFixture, LatentCallOfNotPureUserFunction)
  267. {
  268. RunUnitTestGraph("LY_SC_UnitTest_LatentCallOfNotPureUserFunction", ExecutionMode::Interpreted, DurationSpec::Ticks(3));
  269. }
  270. TEST_F(ScriptCanvasTestFixture, NodeableDurationSubgraph)
  271. {
  272. RunUnitTestGraph("LY_SC_UnitTest_NodeableDurationSubgraph", ExecutionMode::Interpreted, DurationSpec::Ticks(3));
  273. }
  274. TEST_F(ScriptCanvasTestFixture, NodeableDurationFunctionDirectExposeOut)
  275. {
  276. ExpectParse("LY_SC_UnitTest_NodeableDurationFunctionDirectExposeOut");
  277. }
  278. TEST_F(ScriptCanvasTestFixture, NodeableDurationSubgraphDirectExposedOut)
  279. {
  280. RunUnitTestGraph("LY_SC_UnitTest_NodeableDurationSubgraphDirectExposedOut", ExecutionMode::Interpreted, DurationSpec::Ticks(3));
  281. }
  282. TEST_F(ScriptCanvasTestFixture, DISABLED_ForEachNodeNoInputParseError)
  283. {
  284. ExpectParseError("LY_SC_UnitTest_ForEachNodeNoInputParseError");
  285. }
  286. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedCycleDetectError)
  287. {
  288. ExpectParseError("LY_SC_UnitTest_CycleDetectError");
  289. }
  290. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedCycleDetectSimple)
  291. {
  292. ExpectParseError("LY_SC_UnitTest_CycleDetectSimple");
  293. }
  294. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedMultipleOutDataFlowParseError)
  295. {
  296. ExpectParseError("LY_SC_UnitTest_MultipleOutDataFlowParseError");
  297. }
  298. TEST_F(ScriptCanvasTestFixture, InterpretedAnyAsTailNoOp)
  299. {
  300. RunUnitTestGraph("LY_SC_UnitTest_AnyAsTailNoOp");
  301. }
  302. TEST_F(ScriptCanvasTestFixture, InterpretedConstructionVariableOrder)
  303. {
  304. RunUnitTestGraph("LY_SC_UnitTest_ConstructionVariableOrder", ExecutionMode::Interpreted);
  305. }
  306. TEST_F(ScriptCanvasTestFixture, InterpretedCycleDetectCleanGraph)
  307. {
  308. RunUnitTestGraph("LY_SC_UnitTest_CycleDetectCleanGraph", ExecutionMode::Interpreted);
  309. }
  310. TEST_F(ScriptCanvasTestFixture, DISABLED_ParseErrorCycleDetectErrorPastIfBranch)
  311. {
  312. ExpectParseError("LY_SC_UnitTest_CycleDetectErrorPastIfBranch");
  313. }
  314. TEST_F(ScriptCanvasTestFixture, DISABLED_ParseErrorCycleDetectErrorPastOnce)
  315. {
  316. ExpectParseError("LY_SC_UnitTest_CycleDetectErrorPastOnce");
  317. }
  318. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedCycleDetectErrorPostLatent)
  319. {
  320. ExpectParseError("LY_SC_UnitTest_CycleDetectErrorPostLatent");
  321. }
  322. TEST_F(ScriptCanvasTestFixture, InterpretedCycleDetectCleanGraphSequenceVersion)
  323. {
  324. RunUnitTestGraph("LY_SC_UnitTest_CycleDetectCleanGraphSequenceVersion", ExecutionMode::Interpreted);
  325. }
  326. TEST_F(ScriptCanvasTestFixture, InterpretedCycleDetectWorksWithSequence)
  327. {
  328. RunUnitTestGraph("LY_SC_UnitTest_CycleDetectWorksWithSequence", ExecutionMode::Interpreted);
  329. }
  330. TEST_F(ScriptCanvasTestFixture, InterpretedAndBranch)
  331. {
  332. RunUnitTestGraph("LY_SC_UnitTest_AndBranch", ExecutionMode::Interpreted);
  333. }
  334. TEST_F(ScriptCanvasTestFixture, InterpretedAny)
  335. {
  336. RunUnitTestGraph("LY_SC_UnitTest_Any", ExecutionMode::Interpreted);
  337. }
  338. TEST_F(ScriptCanvasTestFixture, InterpretedCompareEqual)
  339. {
  340. RunUnitTestGraph("LY_SC_UnitTest_CompareEqual", ExecutionMode::Interpreted);
  341. }
  342. TEST_F(ScriptCanvasTestFixture, InterpretedCompareGreater)
  343. {
  344. RunUnitTestGraph("LY_SC_UnitTest_CompareGreater", ExecutionMode::Interpreted);
  345. }
  346. TEST_F(ScriptCanvasTestFixture, InterpretedCompareGreaterEqual)
  347. {
  348. RunUnitTestGraph("LY_SC_UnitTest_CompareGreaterEqual", ExecutionMode::Interpreted);
  349. }
  350. TEST_F(ScriptCanvasTestFixture, InterpretedCompareLess)
  351. {
  352. RunUnitTestGraph("LY_SC_UnitTest_CompareLess", ExecutionMode::Interpreted);
  353. }
  354. TEST_F(ScriptCanvasTestFixture, InterpretedCompareLessEqual)
  355. {
  356. RunUnitTestGraph("LY_SC_UnitTest_CompareLessEqual", ExecutionMode::Interpreted);
  357. }
  358. TEST_F(ScriptCanvasTestFixture, InterpretedCompareNotEqual)
  359. {
  360. RunUnitTestGraph("LY_SC_UnitTest_CompareNotEqual", ExecutionMode::Interpreted);
  361. }
  362. TEST_F(ScriptCanvasTestFixture, InterpretedContainerBasicOperators)
  363. {
  364. RunUnitTestGraph("LY_SC_UnitTest_ContainerBasicOperators", ExecutionMode::Interpreted);
  365. }
  366. TEST_F(ScriptCanvasTestFixture, InterpretedCycle)
  367. {
  368. RunUnitTestGraph("LY_SC_UnitTest_Cycle", ExecutionMode::Interpreted);
  369. }
  370. TEST_F(ScriptCanvasTestFixture, InterpretedCycleData)
  371. {
  372. RunUnitTestGraph("LY_SC_UnitTest_CycleData", ExecutionMode::Interpreted);
  373. }
  374. TEST_F(ScriptCanvasTestFixture, InterpretedDataConversionsBooleanNumber)
  375. {
  376. RunUnitTestGraph("LY_SC_UnitTest_DataConversionsBooleanNumber", ExecutionMode::Interpreted);
  377. }
  378. TEST_F(ScriptCanvasTestFixture, InterpretedDataConversionsColor)
  379. {
  380. RunUnitTestGraph("LY_SC_UnitTest_DataConversionsColor", ExecutionMode::Interpreted);
  381. }
  382. // restore this test after conversions are restored
  383. //
  384. // TEST_F(ScriptCanvasTestFixture, InterpretedDataConversionsMatrix)
  385. // {
  386. // RunUnitTestGraph("LY_SC_UnitTest_DataConversionsMatrix", ExecutionMode::Interpreted);
  387. // }
  388. //
  389. // TEST_F(ScriptCanvasTestFixture, InterpretedDataConversionsString)
  390. // {
  391. // RunUnitTestGraph("LY_SC_UnitTest_DataConversionsString", ExecutionMode::Interpreted);
  392. // }
  393. //
  394. // TEST_F(ScriptCanvasTestFixture, InterpretedDataConversionsTransformQuaternion)
  395. // {
  396. // RunUnitTestGraph("LY_SC_UnitTest_DataConversionsTransformQuaternion", ExecutionMode::Interpreted);
  397. // }
  398. TEST_F(ScriptCanvasTestFixture, InterpretedDataConversionsVector)
  399. {
  400. RunUnitTestGraph("LY_SC_UnitTest_DataConversionsVector", ExecutionMode::Interpreted);
  401. }
  402. TEST_F(ScriptCanvasTestFixture, InterpretedDisabledNode)
  403. {
  404. RunUnitTestGraph("LY_SC_UnitTest_DisabledNode", ExecutionMode::Interpreted);
  405. }
  406. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandling)
  407. {
  408. RunUnitTestGraph("LY_SC_UnitTest_EventHandling", ExecutionMode::Interpreted);
  409. }
  410. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlingAddressUpdate)
  411. {
  412. RunUnitTestGraph("LY_SC_UnitTest_EventHandlingAddressUpdate", ExecutionMode::Interpreted);
  413. }
  414. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlingAddressUpdateReference)
  415. {
  416. RunUnitTestGraph("LY_SC_UnitTest_EventHandlingAddressUpdateReference", ExecutionMode::Interpreted);
  417. }
  418. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlingDataConversion)
  419. {
  420. RunUnitTestGraph("LY_SC_UnitTest_EventHandlingDataConversion", ExecutionMode::Interpreted);
  421. }
  422. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlingDataOnly)
  423. {
  424. RunUnitTestGraph("LY_SC_UnitTest_EventHandlingDataOnly", ExecutionMode::Interpreted);
  425. }
  426. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlingDetectInfiniteLoop)
  427. {
  428. ScriptCanvasEditor::RunSpec spec;
  429. spec.release = false;
  430. spec.expectRuntimeFailure = true;
  431. RunUnitTestGraph("LY_SC_UnitTest_EventHandlingDetectInfiniteLoop", spec);
  432. }
  433. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlingLocal)
  434. {
  435. RunUnitTestGraph("LY_SC_UnitTest_EventHandlingLocal", ExecutionMode::Interpreted);
  436. }
  437. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlingLocalAddressByConnection)
  438. {
  439. RunUnitTestGraph("LY_SC_UnitTest_EventHandlingLocalAddressByConnection", ExecutionMode::Interpreted);
  440. }
  441. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlingLocalVoid)
  442. {
  443. RunUnitTestGraph("LY_SC_UnitTest_EventHandlingLocalVoid", ExecutionMode::Interpreted);
  444. }
  445. TEST_F(ScriptCanvasTestFixture, InterpretedEventHandlingVoid)
  446. {
  447. RunUnitTestGraph("LY_SC_UnitTest_EventHandlingVoid", ExecutionMode::Interpreted);
  448. }
  449. TEST_F(ScriptCanvasTestFixture, InterpretedScriptEventGlobal)
  450. {
  451. RunUnitTestGraph("LY_SC_UnitTest_GlobalScriptEvent", ExecutionMode::Interpreted, "globalscriptevents");
  452. }
  453. TEST_F(ScriptCanvasTestFixture, InterpretedScriptEventLocal)
  454. {
  455. RunUnitTestGraph("LY_SC_UnitTest_LocalScriptEvent", ExecutionMode::Interpreted, "localscriptevents");
  456. }
  457. TEST_F(ScriptCanvasTestFixture, InterpretedScriptEventAddressUpdate)
  458. {
  459. RunUnitTestGraph("LY_SC_UnitTest_ScriptEventAddressUpdate", ExecutionMode::Interpreted, "localscriptevents");
  460. }
  461. TEST_F(ScriptCanvasTestFixture, InterpretedScriptEventAddressUpdateReference)
  462. {
  463. RunUnitTestGraph("LY_SC_UnitTest_ScriptEventAddressUpdateReference", ExecutionMode::Interpreted, "localscriptevents");
  464. }
  465. TEST_F(ScriptCanvasTestFixture, InterpretedScriptEventLocalAddressByConnection)
  466. {
  467. RunUnitTestGraph("LY_SC_UnitTest_ScriptEventLocalAddressByConnection", ExecutionMode::Interpreted, "localscriptevents");
  468. }
  469. TEST_F(ScriptCanvasTestFixture, InterpretedExplicitOverloadDivideByNumber)
  470. {
  471. RunUnitTestGraph("LY_SC_UnitTest_ExplicitOverloadDivideByNumber", ExecutionMode::Interpreted);
  472. }
  473. TEST_F(ScriptCanvasTestFixture, InterpretedExplicitOverloadLength)
  474. {
  475. RunUnitTestGraph("LY_SC_UnitTest_ExplicitOverloadLength", ExecutionMode::Interpreted);
  476. }
  477. TEST_F(ScriptCanvasTestFixture, InterpretedForEachIterationArray)
  478. {
  479. RunUnitTestGraph("LY_SC_UnitTest_ForEachIterationArray", ExecutionMode::Interpreted);
  480. }
  481. TEST_F(ScriptCanvasTestFixture, InterpretedForEachIterationArrayUseValueAsInputAfterBreak)
  482. {
  483. RunUnitTestGraph("LY_SC_UnitTest_ForEachIterationArrayUseValueAsInputAfterBreak", ExecutionMode::Interpreted);
  484. }
  485. TEST_F(ScriptCanvasTestFixture, InterpretedForEachIterationArrayUseValueAsInputAfterBreakNested)
  486. {
  487. RunUnitTestGraph("LY_SC_UnitTest_ForEachIterationArrayUseValueAsInputAfterBreakNested", ExecutionMode::Interpreted);
  488. }
  489. TEST_F(ScriptCanvasTestFixture, InterpretedForEachIterationMap)
  490. {
  491. RunUnitTestGraph("LY_SC_UnitTest_ForEachIterationMap", ExecutionMode::Interpreted);
  492. }
  493. TEST_F(ScriptCanvasTestFixture, InterpretedGetElementMap)
  494. {
  495. RunUnitTestGraph("LY_SC_UnitTest_GetElementMap", ExecutionMode::Interpreted);
  496. }
  497. TEST_F(ScriptCanvasTestFixture, InterpretedIfBranch)
  498. {
  499. RunUnitTestGraph("LY_SC_UnitTest_IfBranch", ExecutionMode::Interpreted);
  500. }
  501. TEST_F(ScriptCanvasTestFixture, InterpretedIsEmptyMap)
  502. {
  503. RunUnitTestGraph("LY_SC_UnitTest_IsEmptyMap", ExecutionMode::Interpreted);
  504. }
  505. TEST_F(ScriptCanvasTestFixture, InterpretedIsNull)
  506. {
  507. RunUnitTestGraph("LY_SC_UnitTest_IsNull", ExecutionMode::Interpreted);
  508. }
  509. TEST_F(ScriptCanvasTestFixture, InterpretedLerpBetween)
  510. {
  511. RunUnitTestGraph("LY_SC_UnitTest_LerpBetween", ExecutionMode::Interpreted);
  512. }
  513. TEST_F(ScriptCanvasTestFixture, InterpretedMathExpression)
  514. {
  515. RunUnitTestGraph("LY_SC_UnitTest_MathExpression", ExecutionMode::Interpreted);
  516. }
  517. TEST_F(ScriptCanvasTestFixture, InterpretedMultipleOut)
  518. {
  519. RunUnitTestGraph("LY_SC_UnitTest_MultipleOut", ExecutionMode::Interpreted);
  520. }
  521. TEST_F(ScriptCanvasTestFixture, InterpretedMultipleOutDataFlow)
  522. {
  523. RunUnitTestGraph("LY_SC_UnitTest_MultipleOutDataFlow", ExecutionMode::Interpreted);
  524. }
  525. TEST_F(ScriptCanvasTestFixture, InterpretedMultipleOutInputBugFix)
  526. {
  527. RunUnitTestGraph("LY_SC_UnitTest_MultipleOutInputBugFix", ExecutionMode::Interpreted);
  528. }
  529. TEST_F(ScriptCanvasTestFixture, InterpretedMultipleOutFromIf)
  530. {
  531. RunUnitTestGraph("LY_SC_UnitTest_MultipleOutFromIf", ExecutionMode::Interpreted);
  532. }
  533. TEST_F(ScriptCanvasTestFixture, InterpretedMultipleOutFromRoot)
  534. {
  535. RunUnitTestGraph("LY_SC_UnitTest_MultipleOutFromRoot", ExecutionMode::Interpreted);
  536. }
  537. TEST_F(ScriptCanvasTestFixture, InterpretedMultipleOutSyntaxSugar)
  538. {
  539. RunUnitTestGraph("LY_SC_UnitTest_MultipleOutSyntaxSugar", ExecutionMode::Interpreted);
  540. }
  541. TEST_F(ScriptCanvasTestFixture, InterpretedMultipleReturnResults)
  542. {
  543. RunUnitTestGraph("LY_SC_UnitTest_MultipleReturnResults", ExecutionMode::Interpreted);
  544. }
  545. TEST_F(ScriptCanvasTestFixture, InterpretedMultipleReturnResultsByValue)
  546. {
  547. RunUnitTestGraph("LY_SC_UnitTest_MultipleReturnResultsByValue", ExecutionMode::Interpreted);
  548. }
  549. TEST_F(ScriptCanvasTestFixture, InterpretedMultipleReturnSameTypeResults)
  550. {
  551. RunUnitTestGraph("LY_SC_UnitTest_MultipleReturnSameTypeResults", ExecutionMode::Interpreted);
  552. }
  553. TEST_F(ScriptCanvasTestFixture, InterpretedMultipleStartNodes)
  554. {
  555. RunUnitTestGraph("LY_SC_UnitTest_MultipleStartNodes");
  556. }
  557. TEST_F(ScriptCanvasTestFixture, InterpretedNodeableDuration)
  558. {
  559. RunUnitTestGraph("LY_SC_UnitTest_NodeableDuration", ExecutionMode::Interpreted, DurationSpec::Seconds(1.1f));
  560. }
  561. TEST_F(ScriptCanvasTestFixture, InterpretedNodeableDelay)
  562. {
  563. RunUnitTestGraph("LY_SC_UnitTest_NodeableDelay", ExecutionMode::Interpreted, DurationSpec::Seconds(3.1f));
  564. }
  565. TEST_F(ScriptCanvasTestFixture, InterpretedNodeableDelayWithLooping)
  566. {
  567. RunUnitTestGraph("LY_SC_UnitTest_NodeableDelayWithLooping", ExecutionMode::Interpreted, DurationSpec::Seconds(3.1f));
  568. }
  569. TEST_F(ScriptCanvasTestFixture, InterpretedNodeableTimer)
  570. {
  571. RunUnitTestGraph("LY_SC_UnitTest_NodeableTimer", ExecutionMode::Interpreted, DurationSpec::Ticks(6));
  572. }
  573. TEST_F(ScriptCanvasTestFixture, InterpretedNodeableTimeDelay)
  574. {
  575. RunUnitTestGraph("LY_SC_UnitTest_NodeableTimeDelay", ExecutionMode::Interpreted, DurationSpec::Ticks(6));
  576. }
  577. TEST_F(ScriptCanvasTestFixture, InterpretedNodeableHeartBeat)
  578. {
  579. RunUnitTestGraph("LY_SC_UnitTest_NodeableHeartBeat", ExecutionMode::Interpreted, DurationSpec::Ticks(31));
  580. }
  581. TEST_F(ScriptCanvasTestFixture, InterpretedNodeableRepeater)
  582. {
  583. RunUnitTestGraph("LY_SC_UnitTest_NodeableRepeater", ExecutionMode::Interpreted, DurationSpec::Ticks(11));
  584. }
  585. TEST_F(ScriptCanvasTestFixture, InterpretedNotBranch)
  586. {
  587. RunUnitTestGraph("LY_SC_UnitTest_NotBranch", ExecutionMode::Interpreted);
  588. }
  589. TEST_F(ScriptCanvasTestFixture, InterpretedOnce)
  590. {
  591. RunUnitTestGraph("LY_SC_UnitTest_Once", ExecutionMode::Interpreted);
  592. }
  593. TEST_F(ScriptCanvasTestFixture, InterpretedOperatorAdd)
  594. {
  595. RunUnitTestGraph("LY_SC_UnitTest_OperatorAdd", ExecutionMode::Interpreted);
  596. }
  597. TEST_F(ScriptCanvasTestFixture, InterpretedOperatorDiv)
  598. {
  599. RunUnitTestGraph("LY_SC_UnitTest_OperatorDiv", ExecutionMode::Interpreted);
  600. }
  601. TEST_F(ScriptCanvasTestFixture, InterpretedOperatorMul)
  602. {
  603. RunUnitTestGraph("LY_SC_UnitTest_OperatorMul", ExecutionMode::Interpreted);
  604. }
  605. TEST_F(ScriptCanvasTestFixture, InterpretedOperatorSub)
  606. {
  607. RunUnitTestGraph("LY_SC_UnitTest_OperatorSub", ExecutionMode::Interpreted);
  608. }
  609. TEST_F(ScriptCanvasTestFixture, InterpretedOrBranch)
  610. {
  611. RunUnitTestGraph("LY_SC_UnitTest_OrBranch", ExecutionMode::Interpreted);
  612. }
  613. TEST_F(ScriptCanvasTestFixture, InterpretedOrderedSequencer)
  614. {
  615. RunUnitTestGraph("LY_SC_UnitTest_OrderedSequencer", ExecutionMode::Interpreted);
  616. }
  617. TEST_F(ScriptCanvasTestFixture, InterpretedPerformance)
  618. {
  619. RunUnitTestGraph("LY_SC_UnitTest_Performance", ExecutionMode::Interpreted);
  620. }
  621. TEST_F(ScriptCanvasTestFixture, InterpretedPrint)
  622. {
  623. RunUnitTestGraph("LY_SC_UnitTest_Print", ExecutionMode::Interpreted);
  624. }
  625. TEST_F(ScriptCanvasTestFixture, InterpretedPrintConnectedInput)
  626. {
  627. RunUnitTestGraph("LY_SC_UnitTest_PrintConnectedInput", ExecutionMode::Interpreted);
  628. }
  629. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedPrintFormatEmptyValue)
  630. {
  631. ExpectParseError("LY_SC_UnitTest_PrintFormatEmptyValue");
  632. }
  633. TEST_F(ScriptCanvasTestFixture, InterpretedProperties)
  634. {
  635. RunUnitTestGraph("LY_SC_UnitTest_Properties", ExecutionMode::Interpreted);
  636. }
  637. TEST_F(ScriptCanvasTestFixture, InterpretedPropertiesLiteReference)
  638. {
  639. RunUnitTestGraph("LY_SC_UnitTest_PropertiesLite", ExecutionMode::Interpreted);
  640. }
  641. TEST_F(ScriptCanvasTestFixture, InterpretedPropertiesLiteConnection)
  642. {
  643. RunUnitTestGraph("LY_SC_UnitTest_PropertiesByConnection", ExecutionMode::Interpreted);
  644. }
  645. TEST_F(ScriptCanvasTestFixture, InterpretedPropertiesRecursion)
  646. {
  647. RunUnitTestGraph("LY_SC_UnitTest_PropertiesRecursion", ExecutionMode::Interpreted);
  648. }
  649. TEST_F(ScriptCanvasTestFixture, InterpretedPropertiesSet)
  650. {
  651. RunUnitTestGraph("LY_SC_UnitTest_PropertiesSet", ExecutionMode::Interpreted);
  652. }
  653. TEST_F(ScriptCanvasTestFixture, InterpretedRandomSignal)
  654. {
  655. RunUnitTestGraph("LY_SC_UnitTest_RandomSignal", ExecutionMode::Interpreted);
  656. }
  657. TEST_F(ScriptCanvasTestFixture, InterpretedStringFormat)
  658. {
  659. RunUnitTestGraph("LY_SC_UnitTest_StringFormat", ExecutionMode::Interpreted);
  660. }
  661. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedStringFormatEmptyValue)
  662. {
  663. ExpectParseError("LY_SC_UnitTest_StringFormatEmptyValue");
  664. }
  665. TEST_F(ScriptCanvasTestFixture, InterpretedStringFormatWithRepeatedValueName)
  666. {
  667. RunUnitTestGraph("LY_SC_UnitTest_StringFormatWithRepeatedValueName", ExecutionMode::Interpreted);
  668. }
  669. TEST_F(ScriptCanvasTestFixture, InterpretedSwitch)
  670. {
  671. RunUnitTestGraph("LY_SC_UnitTest_Switch", ExecutionMode::Interpreted);
  672. }
  673. TEST_F(ScriptCanvasTestFixture, InterpretedVariableChangeEvent)
  674. {
  675. RunUnitTestGraph("LY_SC_UnitTest_VariableChangeEvent", ExecutionMode::Interpreted);
  676. }
  677. TEST_F(ScriptCanvasTestFixture, InterpretedVariableChangeEventConnectionControl)
  678. {
  679. RunUnitTestGraph("LY_SC_UnitTest_VariableChangeEventConnectionControl", ExecutionMode::Interpreted);
  680. }
  681. TEST_F(ScriptCanvasTestFixture, InterpretedVariableChangeEventWithCheck)
  682. {
  683. RunUnitTestGraph("LY_SC_UnitTest_VariableChangeEventWithCheck", ExecutionMode::Interpreted);
  684. }
  685. TEST_F(ScriptCanvasTestFixture, DISABLED_InterpretedVariableChangeEventInfiniteLoopCheckError)
  686. {
  687. ExpectParseError("LY_SC_UnitTest_VariableChangeEventInfiniteLoopCheckError");
  688. }
  689. TEST_F(ScriptCanvasTestFixture, InterpretedVariableReferences)
  690. {
  691. RunUnitTestGraph("LY_SC_UnitTest_VariableReferences", ExecutionMode::Interpreted);
  692. }
  693. TEST_F(ScriptCanvasTestFixture, InterpretedVariableReferenceChangeEventWithCheck)
  694. {
  695. RunUnitTestGraph("LY_SC_UnitTest_VariableReferenceChangeEventWithCheck", ExecutionMode::Interpreted);
  696. }
  697. TEST_F(ScriptCanvasTestFixture, InterpretedVector)
  698. {
  699. RunUnitTestGraph("LY_SC_UnitTest_Vector", ExecutionMode::Interpreted);
  700. }
  701. TEST_F(ScriptCanvasTestFixture, InterpretedWhile)
  702. {
  703. RunUnitTestGraph("LY_SC_UnitTest_While", ExecutionMode::Interpreted);
  704. }
  705. TEST_F(ScriptCanvasTestFixture, InterpretedWhileDetectInfiniteLoop)
  706. {
  707. ScriptCanvasEditor::RunSpec spec;
  708. spec.release = false;
  709. spec.expectRuntimeFailure = true;
  710. RunUnitTestGraph("LY_SC_UnitTest_WhileDetectInfiniteLoop", spec);
  711. }
  712. TEST_F(ScriptCanvasTestFixture, InterpretedWhileBreak)
  713. {
  714. RunUnitTestGraph("LY_SC_UnitTest_WhileBreak", ExecutionMode::Interpreted);
  715. }
  716. TEST_F(ScriptCanvasTestFixture, InterpretedDivideByNumber)
  717. {
  718. RunUnitTestGraph("LY_SC_UnitTest_DivideByNumber");
  719. }
  720. // move to in-editor test, where (required) assetids are available
  721. // TEST_F(ScriptCanvasTestFixture, InterpretedUseLocallyDefinedFunction)
  722. // {
  723. // RunUnitTestGraph("LY_SC_UnitTest_UseLocallyDefinedFunction", ExecutionMode::Interpreted);
  724. //}
  725. TEST_F(ScriptCanvasTestFixture, InterpretedPathologicalFlowOfControl)
  726. {
  727. RunUnitTestGraph("LY_SC_UnitTest_PathologicalFlowOfControl");
  728. }
  729. TEST_F(ScriptCanvasTestFixture, InterpretedPathologicalFlowOfControlFixSwitchLite)
  730. {
  731. RunUnitTestGraph("LY_SC_UnitTest_PathologicalFlowOfControlFixSwitchLite");
  732. }
  733. TEST_F(ScriptCanvasTestFixture, InterpretedPathologicalFlowOfControlFixSwitch)
  734. {
  735. RunUnitTestGraph("LY_SC_UnitTest_PathologicalFlowOfControlFixSwitch");
  736. }
  737. TEST_F(ScriptCanvasTestFixture, InterpretedInputValuePointerReferenceType)
  738. {
  739. RunUnitTestGraph("LY_SC_UnitTest_InputValuePointerReferenceType");
  740. }
  741. TEST_F(ScriptCanvasTestFixture, InterpretedReturnValuePointerReferenceType)
  742. {
  743. RunUnitTestGraph("LY_SC_UnitTest_ReturnValuePointerReferenceType");
  744. }
  745. TEST_F(ScriptCanvasTestFixture, InterpretedBranchInputValuePointerReferenceType)
  746. {
  747. RunUnitTestGraph("LY_SC_UnitTest_BranchInputValuePointerReferenceType");
  748. }
  749. // \todo formal support of shared slots
  750. // TEST_F(ScriptCanvasTestFixture, InterpretedNodeableBranchMethodSharedDataSlot)
  751. // {
  752. // RunUnitTestGraph("LY_SC_UnitTest_NodeableBranchMethodSharedDataSlot", ExecutionMode::Interpreted);
  753. // }
  754. TEST_F(ScriptCanvasTestFixture, InterpretedNodeableInputMethodSharedDataSlot)
  755. {
  756. RunUnitTestGraph("LY_SC_UnitTest_NodeableInputMethodSharedDataSlot", ExecutionMode::Interpreted);
  757. }
  758. TEST_F(ScriptCanvasTestFixture, InterpretedExecutionOutPerformance)
  759. {
  760. RunUnitTestGraph("LY_SC_UnitTest_ExecutionOutPerformance", ExecutionMode::Interpreted);
  761. }
  762. TEST_F(ScriptCanvasTestFixture, PromotedUserVariables)
  763. {
  764. RunUnitTestGraph("LY_SC_UnitTest_PromotedUserVariables", ExecutionMode::Interpreted);
  765. }
  766. TEST_F(ScriptCanvasTestFixture, UseClassWithDefaultOut)
  767. {
  768. RunUnitTestGraph("LY_SC_UnitTest_UseClassWithDefaultOut", ExecutionMode::Interpreted);
  769. }
  770. TEST_F(ScriptCanvasTestFixture, GlobalMethodsCheckedOperation)
  771. {
  772. RunUnitTestGraph("LY_SC_UnitTest_GlobalMethodsCheckedOperation", ExecutionMode::Interpreted);
  773. }
  774. TEST_F(ScriptCanvasTestFixture, GlobalMultipleReturnResults)
  775. {
  776. RunUnitTestGraph("LY_SC_UnitTest_GlobalMultipleReturnResults", ExecutionMode::Interpreted);
  777. }
  778. TEST_F(ScriptCanvasTestFixture, GlobalMultipleReturnResultsByValue)
  779. {
  780. RunUnitTestGraph("LY_SC_UnitTest_GlobalMultipleReturnResultsByValue", ExecutionMode::Interpreted);
  781. }
  782. TEST_F(ScriptCanvasTestFixture, StringFormatSquareBracketTranslation)
  783. {
  784. RunUnitTestGraph("LY_SC_UnitTest_StringFormatSquareBracketTranslation", ExecutionMode::Interpreted);
  785. }
  786. TEST_F(ScriptCanvasTestFixture, AutoGenFunctions)
  787. {
  788. RunUnitTestGraph("LY_SC_UnitTest_AutoGenFunctions", ExecutionMode::Interpreted);
  789. }
  790. TEST_F(ScriptCanvasTestFixture, CompactNodeBasicOperators)
  791. {
  792. RunUnitTestGraph("LY_SC_UnitTest_CompactNodeBasicOperators", ExecutionMode::Interpreted);
  793. }
  794. TEST_F(ScriptCanvasTestFixture, CompactNodeMathematicalFunctions)
  795. {
  796. RunUnitTestGraph("LY_SC_UnitTest_CompactNodeMathematicalFunctions", ExecutionMode::Interpreted);
  797. }
  798. TEST_F(ScriptCanvasTestFixture, CompactNodeTrigonometry)
  799. {
  800. RunUnitTestGraph("LY_SC_UnitTest_CompactNodeTrigonometry", ExecutionMode::Interpreted);
  801. }
  802. TEST_F(ScriptCanvasTestFixture, CompactNodeChain)
  803. {
  804. RunUnitTestGraph("LY_SC_UnitTest_CompactNodeChain", ExecutionMode::Interpreted);
  805. }