Index: LayoutTests/fast/files/file-constructor.html |
diff --git a/LayoutTests/fast/files/file-constructor.html b/LayoutTests/fast/files/file-constructor.html |
index f615864f75e496d559deab8828f0874b669cf0b7..5985d524c43f6a0788780afe8f29b5c6f25d2fe8 100644 |
--- a/LayoutTests/fast/files/file-constructor.html |
+++ b/LayoutTests/fast/files/file-constructor.html |
@@ -69,6 +69,9 @@ shouldThrow("new File([], 'world.html', {endings:'illegalValue'})", "'TypeError: |
shouldThrow("new File([], 'world.html', {endings:throwingObj})", "'Error'"); |
shouldThrow("new File([], 'world.html', {type:throwingObj})", "'Error'"); |
shouldThrow("new File([], 'world.html', {type:'hello\u00EE'})", "'SyntaxError: Failed to construct \\'File\\': The \"type\" property must consist of ASCII characters.'"); |
+shouldThrow("new File([], 'world.html', {lastModifiedDate: 'not a date'})", "'TypeError: Failed to construct \\'File\\': The \"lastModifiedDate\" property must be a Date instance.'"); |
+shouldThrow("new File([], 'world.html', {lastModifiedDate: null})", "'TypeError: Failed to construct \\'File\\': The \"lastModifiedDate\" property must be a Date instance.'"); |
+shouldThrow("new File([], 'world.html', {lastModifiedDate: Date.now()})", "'TypeError: Failed to construct \\'File\\': The \"lastModifiedDate\" property must be a Date instance.'"); |
// Test various non-object literals being used as property bags. |
shouldThrow("(new File([], 'world.html', null)) instanceof window.File", "'TypeError: Failed to construct \\'File\\': The 3rd argument is not of type Object.'"); |
@@ -87,6 +90,21 @@ shouldBe("(new File([], 'world.html', {type:'text/html'})).type", "'text/html'") |
shouldBe("(new File([], 'world.html', {type:'text/html'})).size", "0"); |
shouldBe("(new File([], 'world.html', {type:'text/plain;charset=UTF-8'})).type", "'text/plain;charset=utf-8'"); |
+// Test that the lastModificationDate is correctly added to the File. |
+var aDate = new Date(441532800000); |
+shouldBeTrue("(new File([], 'world.html', {lastModifiedDate: aDate})).lastModifiedDate instanceof Date"); |
+shouldBe("(new File([], 'world.html', {lastModifiedDate: aDate})).lastModifiedDate.valueOf()", "aDate.valueOf()"); |
+shouldBeTrue("(new File([], 'world.html', {lastModifiedDate: new Date(NaN)})).lastModifiedDate instanceof Date"); |
+shouldBeNaN("(new File([], 'world.html', {lastModifiedDate: new Date(NaN)})).lastModifiedDate.valueOf()"); |
+// Unless specified, lastModifiedDate should default to now. |
+shouldBeTrue("(new File([], 'world.html')).lastModifiedDate instanceof Date"); |
+var startTime = Date.now(); |
+var fileTime = (new File([], 'world.html')).lastModifiedDate.valueOf(); |
+var endTime = Date.now(); |
+// FIXME: these checks will fail if time goes backwards, e.g. DST. We should have a generic bullet-proof method for comparing against Date.now(). |
jsbell
2013/11/18 20:54:05
Drive-by comment:
Date.now() is ms since epoch in
pwnall-personal
2013/11/19 09:10:12
Thank you very much for pointing this out!
I upda
|
+shouldBeTrue("startTime <= fileTime"); |
+shouldBeTrue("fileTime <= endTime"); |
+ |
// Test the number of expected arguments in the File constructor. |
shouldBe("window.File.length", "2"); |