blob: a08b2d354fef7b9d30aab15dc688607ab0ca1b64 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/bindings/core/v8/boxed_v8_module.h"
#include "testing/gmock/include/gmock/gmock-matchers.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/renderer/bindings/core/v8/module_record.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h"
#include "third_party/blink/renderer/core/testing/module_test_base.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/loader/fetch/script_fetch_options.h"
#include "third_party/blink/renderer/platform/wtf/text/text_position.h"
#include "v8/include/v8.h"
namespace blink {
namespace {
TEST(BoxedV8ModuleTest, equalAndHash) {
V8TestingScope scope;
const KURL js_url_a("https://example.com/a.js");
const KURL js_url_b("https://example.com/b.js");
Member<BoxedV8Module> module_empty = nullptr;
Member<BoxedV8Module> module_deleted(kMemberDeletedValue);
v8::Local<v8::Module> local_module_a = ModuleTestBase::CompileModule(
scope.GetIsolate(), "export const a = 'a';", js_url_a);
Member<BoxedV8Module> module_a =
MakeGarbageCollected<BoxedV8Module>(scope.GetIsolate(), local_module_a);
v8::Local<v8::Module> local_module_b = ModuleTestBase::CompileModule(
scope.GetIsolate(), "export const b = 'b';", js_url_b);
Member<BoxedV8Module> module_b =
MakeGarbageCollected<BoxedV8Module>(scope.GetIsolate(), local_module_b);
EXPECT_TRUE(BoxedV8ModuleHash::Equal(module_deleted, module_deleted));
EXPECT_FALSE(BoxedV8ModuleHash::Equal(module_deleted, module_a));
EXPECT_FALSE(BoxedV8ModuleHash::Equal(module_deleted, module_b));
EXPECT_FALSE(BoxedV8ModuleHash::Equal(module_deleted, module_empty));
EXPECT_TRUE(BoxedV8ModuleHash::Equal(module_empty, module_empty));
EXPECT_FALSE(BoxedV8ModuleHash::Equal(module_empty, module_a));
EXPECT_FALSE(BoxedV8ModuleHash::Equal(module_empty, module_b));
EXPECT_TRUE(BoxedV8ModuleHash::Equal(module_a, module_a));
EXPECT_FALSE(BoxedV8ModuleHash::Equal(module_a, module_b));
EXPECT_NE(
DefaultHash<blink::Member<blink::BoxedV8Module>>::Hash::GetHash(module_a),
DefaultHash<blink::Member<blink::BoxedV8Module>>::Hash::GetHash(
module_b));
}
} // namespace
} // namespace blink