blob: 2ca8489bfbf850570d21781ee93e3c856fc8ea45 [file] [log] [blame]
// Copyright 2013 The Flutter 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 "flutter/testing/dart_isolate_runner.h"
#include "flutter/testing/fixture_test.h"
#include "tonic/converter/dart_converter.h"
#include "tonic/file_loader/file_loader.h"
namespace flutter {
namespace testing {
using FileLoaderTest = FixtureTest;
TEST_F(FileLoaderTest, CanonicalizesFileUrlCorrectly) {
ASSERT_FALSE(DartVMRef::IsInstanceRunning());
auto settings = CreateSettingsForFixture();
auto vm_snapshot = DartSnapshot::VMSnapshotFromSettings(settings);
auto isolate_snapshot = DartSnapshot::IsolateSnapshotFromSettings(settings);
auto vm_ref = DartVMRef::Create(settings, vm_snapshot, isolate_snapshot);
ASSERT_TRUE(vm_ref);
TaskRunners task_runners(GetCurrentTestName(), //
GetCurrentTaskRunner(), //
GetCurrentTaskRunner(), //
GetCurrentTaskRunner(), //
GetCurrentTaskRunner() //
);
auto isolate = RunDartCodeInIsolate(vm_ref, settings, task_runners, "main",
{}, GetDefaultKernelFilePath());
ASSERT_TRUE(isolate);
ASSERT_TRUE(isolate->RunInIsolateScope([]() {
tonic::FileLoader file_loader;
std::string original_url = "file:///Users/test/foo";
Dart_Handle dart_url = tonic::StdStringToDart(original_url);
auto canonicalized_url = file_loader.CanonicalizeURL(Dart_Null(), dart_url);
EXPECT_TRUE(canonicalized_url);
EXPECT_EQ(tonic::StdStringFromDart(canonicalized_url), original_url);
return true;
}));
}
} // namespace testing
} // namespace flutter