| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- #include "stdafx.h"
- #include "catch.hpp"
- #include <process.h>
- #pragma warning(disable:4100) // unreferenced formal parameter
- #pragma warning(disable:6387) // suppressing preFAST which raises warning for passing null to the JsRT APIs
- #pragma warning(disable:6262) // CATCH is using stack variables to report errors, suppressing the preFAST warning.
- namespace JsDiagApiTest
- {
- static void CALLBACK DebugEventCallback(JsDiagDebugEvent debugEvent, JsValueRef eventData, void* callbackState)
- {
- }
- bool TestSetup(JsRuntimeHandle *runtime)
- {
- JsValueRef context = JS_INVALID_REFERENCE;
- JsValueRef setContext = JS_INVALID_REFERENCE;
- // Create runtime, context and set current context
- REQUIRE(JsCreateRuntime(JsRuntimeAttributeNone, nullptr, runtime) == JsNoError);
- REQUIRE(JsCreateContext(*runtime, &context) == JsNoError);
- REQUIRE(JsSetCurrentContext(context) == JsNoError);
- REQUIRE(((JsGetCurrentContext(&setContext) == JsNoError) || setContext == context));
- // Enable debugging
- REQUIRE(JsDiagStartDebugging(*runtime, JsDiagApiTest::DebugEventCallback, nullptr) == JsNoError);
- return true;
- }
- bool TestCleanup(JsRuntimeHandle runtime)
- {
- if (runtime != nullptr)
- {
- // Disable debugging
- JsDiagStopDebugging(runtime, nullptr);
- JsSetCurrentContext(nullptr);
- JsDisposeRuntime(runtime);
- }
- return true;
- }
- template <class Handler>
- void WithSetup(Handler handler)
- {
- JsRuntimeHandle runtime = JS_INVALID_RUNTIME_HANDLE;
- if (!TestSetup(&runtime))
- {
- REQUIRE(false);
- return;
- }
- handler(runtime);
- TestCleanup(runtime);
- }
- #ifndef BUILD_WITHOUT_SCRIPT_DEBUG
- void BreakpointsContextTest(JsRuntimeHandle runtime)
- {
- JsContextRef context = JS_INVALID_REFERENCE;
- REQUIRE(JsGetCurrentContext(&context) == JsNoError);
- // Verify no errors with a context set
- JsValueRef scriptsArray = JS_INVALID_REFERENCE;
- REQUIRE(JsDiagGetScripts(&scriptsArray) == JsNoError);
- // Verify the APIs return an error when no current context set
- JsSetCurrentContext(nullptr);
- CHECK(JsDiagGetScripts(&scriptsArray) == JsErrorNoCurrentContext);
- JsValueRef breakpoint = JS_INVALID_REFERENCE;
- CHECK(JsDiagSetBreakpoint(0, 0, 0, &breakpoint) == JsErrorNoCurrentContext);
- CHECK(JsDiagRemoveBreakpoint(0) == JsErrorNoCurrentContext);
- }
- TEST_CASE("JsDiagApiTest_BreakpointsContextTest", "[JsDiagApiTest]")
- {
- JsDiagApiTest::WithSetup(JsDiagApiTest::BreakpointsContextTest);
- }
- #endif // BUILD_WITHOUT_SCRIPT_DEBUG
- }
|