current-basic.html (4994B)
1 <!doctype html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="resources/is_uuid.js"></script> 5 <script> 6 test(() => { 7 let start_length = navigation.entries().length; 8 let first_entry = navigation.currentEntry; 9 let start_index = first_entry.index; 10 assert_not_equals(first_entry, null); 11 assert_not_equals(first_entry.key, null); 12 assert_true(isUUID(first_entry.key)); 13 assert_not_equals(first_entry.id, null); 14 assert_true(isUUID(first_entry.id)); 15 assert_equals(first_entry.url, location.href); 16 assert_true(first_entry.sameDocument); 17 assert_equals(navigation.entries().length, start_length); 18 assert_equals(first_entry, navigation.entries()[start_index]); 19 20 history.replaceState(2, "", "#2"); 21 let second_entry = navigation.currentEntry; 22 assert_not_equals(second_entry, first_entry); 23 assert_equals(second_entry.key, first_entry.key); 24 assert_true(isUUID(second_entry.key)); 25 assert_not_equals(second_entry.id, first_entry.id); 26 assert_true(isUUID(second_entry.id)); 27 assert_equals(second_entry.url, location.href); 28 assert_true(second_entry.sameDocument); 29 assert_equals(navigation.entries().length, start_length); 30 assert_equals(second_entry, navigation.entries()[start_index]); 31 32 history.pushState(3, "", "#3"); 33 let third_entry = navigation.currentEntry; 34 assert_not_equals(third_entry, second_entry); 35 assert_not_equals(third_entry.key, second_entry.key); 36 assert_true(isUUID(third_entry.key)); 37 assert_not_equals(third_entry.id, second_entry.id); 38 assert_true(isUUID(third_entry.id)); 39 assert_equals(third_entry.url, location.href); 40 assert_true(third_entry.sameDocument); 41 assert_equals(navigation.entries().length, start_length + 1); 42 assert_equals(third_entry, navigation.entries()[start_index + 1]); 43 44 history.pushState(4, ""); 45 let fourth_entry = navigation.currentEntry; 46 assert_not_equals(fourth_entry, third_entry); 47 assert_not_equals(fourth_entry.key, third_entry.key); 48 assert_true(isUUID(fourth_entry.key)); 49 assert_not_equals(fourth_entry.id, third_entry.id); 50 assert_true(isUUID(fourth_entry.id)); 51 assert_equals(fourth_entry.url, third_entry.url); 52 assert_true(fourth_entry.sameDocument); 53 assert_equals(navigation.entries().length, start_length + 2); 54 assert_equals(fourth_entry, navigation.entries()[start_index + 2]); 55 56 history.replaceState(5, ""); 57 let fifth_entry = navigation.currentEntry; 58 assert_not_equals(fifth_entry, fourth_entry); 59 assert_equals(fifth_entry.key, fourth_entry.key); 60 assert_true(isUUID(fifth_entry.key)); 61 assert_not_equals(fifth_entry.id, fourth_entry.id); 62 assert_true(isUUID(fifth_entry.id)); 63 assert_equals(fifth_entry.url, fourth_entry.url); 64 assert_true(fifth_entry.sameDocument); 65 assert_equals(navigation.entries().length, start_length + 2); 66 assert_equals(fifth_entry, navigation.entries()[start_index + 2]); 67 68 history.pushState(5, ""); 69 let fifth_entry_after_push = navigation.currentEntry; 70 assert_not_equals(fifth_entry_after_push, fifth_entry); 71 assert_not_equals(fifth_entry_after_push.key, fifth_entry.key); 72 assert_true(isUUID(fifth_entry_after_push.key)); 73 assert_not_equals(fifth_entry_after_push.id, fifth_entry.id); 74 assert_true(isUUID(fifth_entry_after_push.id)); 75 assert_equals(fifth_entry_after_push.url, fifth_entry.url); 76 assert_true(fifth_entry_after_push.sameDocument); 77 assert_equals(navigation.entries().length, start_length + 3); 78 assert_equals(fifth_entry_after_push, navigation.entries()[start_index + 3]); 79 80 history.replaceState(5, ""); 81 let fifth_entry_after_replace = navigation.currentEntry; 82 assert_not_equals(fifth_entry_after_replace, fifth_entry_after_push); 83 assert_equals(fifth_entry_after_replace.key, fifth_entry_after_push.key); 84 assert_true(isUUID(fifth_entry_after_replace.key)); 85 assert_not_equals(fifth_entry_after_replace.id, fifth_entry_after_push.id); 86 assert_true(isUUID(fifth_entry_after_replace.id)); 87 assert_equals(fifth_entry_after_replace.url, fifth_entry_after_push.url); 88 assert_true(fifth_entry_after_replace.sameDocument); 89 assert_equals(navigation.entries().length, start_length + 3); 90 assert_equals(fifth_entry_after_replace, navigation.entries()[start_index + 3]); 91 92 location.hash = "6"; 93 let sixth_entry = navigation.currentEntry; 94 assert_not_equals(sixth_entry, fifth_entry_after_replace); 95 assert_equals(sixth_entry.key, fifth_entry_after_replace.key); 96 assert_true(isUUID(sixth_entry.key)); 97 assert_not_equals(sixth_entry.id, fifth_entry_after_replace.id); 98 assert_true(isUUID(sixth_entry.id)); 99 assert_not_equals(sixth_entry.url, fifth_entry_after_replace.url); 100 assert_true(sixth_entry.sameDocument); 101 assert_equals(navigation.entries().length, start_length + 3); 102 assert_equals(sixth_entry, navigation.entries()[start_index + 3]); 103 104 navigation.entries().forEach(entry => { 105 assert_true(isUUID(entry.id)); 106 assert_true(isUUID(entry.key)); 107 }); 108 }, "Basic tests for navigation.currentEntry"); 109 </script>