1// Copyright 2021 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Flags: --allow-natives-syntax --harmony-import-assertions
6
7var result1;
8var result2;
9var result3;
10var result4;
11var result5;
12var result6;
13var result7;
14var result8;
15var result9;
16var result10;
17import('modules-skip-1.json', null).then(
18    () => assertUnreachable('Should have failed due to non-object parameter'),
19    error => result1 = error.message);
20import('modules-skip-1.json', 7).then(
21    () => assertUnreachable('Should have failed due to non-object parameter'),
22    error => result2 = error.message);
23import('modules-skip-1.json', 'string').then(
24        () => assertUnreachable('Should have failed due to non-object parameter'),
25        error => result3 = error.message);
26import('modules-skip-1.json', { assert: null}).then(
27    () => assertUnreachable('Should have failed due to bad assert object'),
28    error => result4 = error.message);
29import('modules-skip-1.json', { assert: 7}).then(
30    () => assertUnreachable('Should have failed due to bad assert object'),
31    error => result5 = error.message);
32import('modules-skip-1.json', { assert: 'string'}).then(
33    () => assertUnreachable('Should have failed due to bad assert object'),
34    error => result6 = error.message);
35import('modules-skip-1.json', { assert: { a: null }}).then(
36    () => assertUnreachable('Should have failed due to bad assert object'),
37    error => result7 = error.message);
38import('modules-skip-1.json', { assert: { a: undefined }}).then(
39    () => assertUnreachable('Should have failed due to bad assertion value'),
40    error => result8 = error.message);
41import('modules-skip-1.json', { assert: { a: 7 }}).then(
42    () => assertUnreachable('Should have failed due to bad assertion value'),
43    error => result9 = error.message);
44    import('modules-skip-1.json', { assert: { a: { } }}).then(
45        () => assertUnreachable('Should have failed due to bad assertion value'),
46        error => result10 = error.message);
47
48%PerformMicrotaskCheckpoint();
49
50const argumentNotObjectError = 'The second argument to import() must be an object';
51const assertOptionNotObjectError = 'The \'assert\' option must be an object';
52const assertionValueNotStringError = 'Import assertion value must be a string';
53
54assertEquals(argumentNotObjectError, result1);
55assertEquals(argumentNotObjectError, result2);
56assertEquals(argumentNotObjectError, result3);
57assertEquals(assertOptionNotObjectError, result4);
58assertEquals(assertOptionNotObjectError, result5);
59assertEquals(assertOptionNotObjectError, result6);
60assertEquals(assertionValueNotStringError, result7);
61assertEquals(assertionValueNotStringError, result8);
62assertEquals(assertionValueNotStringError, result9);
63assertEquals(assertionValueNotStringError, result10);
64