OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "bin/file.h" | 5 #include "bin/file.h" |
6 | 6 |
7 #include "vm/assert.h" | 7 #include "vm/assert.h" |
8 #include "vm/globals.h" | 8 #include "vm/globals.h" |
9 #include "vm/unit_test.h" | 9 #include "vm/unit_test.h" |
10 | 10 |
11 | 11 |
12 // Helper method to be able to run the test from the runtime | 12 // Helper method to be able to run the test from the runtime |
13 // directory, or the top directory. | 13 // directory, or the top directory. |
14 static const char* GetFileName(const char* name) { | 14 static const char* GetFileName(const char* name) { |
15 if (File::Exists(name)) { | 15 if (File::Exists(name)) { |
16 return name; | 16 return name; |
17 } else { | 17 } else { |
18 static const int kRuntimeLength = strlen("runtime/"); | 18 static const int kRuntimeLength = strlen("runtime/"); |
19 return name + kRuntimeLength; | 19 return name + kRuntimeLength; |
20 } | 20 } |
21 } | 21 } |
22 | 22 |
23 | 23 |
24 UNIT_TEST_CASE(Read) { | 24 UNIT_TEST_CASE(Read) { |
25 const char* kFilename = GetFileName("runtime/bin/file_test.cc"); | 25 const char* kFilename = GetFileName("runtime/bin/file_test.cc"); |
26 File* file = File::Open(kFilename, false); | 26 File* file = File::Open(kFilename, File::kRead); |
27 EXPECT(file != NULL); | 27 EXPECT(file != NULL); |
28 EXPECT_STREQ(kFilename, file->name()); | 28 EXPECT_STREQ(kFilename, file->name()); |
29 char buffer[16]; | 29 char buffer[16]; |
30 buffer[0] = '\0'; | 30 buffer[0] = '\0'; |
31 EXPECT(file->ReadFully(buffer, 13)); // ReadFully returns true. | 31 EXPECT(file->ReadFully(buffer, 13)); // ReadFully returns true. |
32 buffer[13] = '\0'; | 32 buffer[13] = '\0'; |
33 EXPECT_STREQ("// Copyright ", buffer); | 33 EXPECT_STREQ("// Copyright ", buffer); |
34 EXPECT(!file->WriteByte(1)); // Cannot write to a read-only file. | 34 EXPECT(!file->WriteByte(1)); // Cannot write to a read-only file. |
35 delete file; | 35 delete file; |
36 } | 36 } |
37 | 37 |
38 | 38 |
39 UNIT_TEST_CASE(FileLength) { | 39 UNIT_TEST_CASE(FileLength) { |
40 const char* kFilename = | 40 const char* kFilename = |
41 GetFileName("runtime/tests/vm/data/fixed_length_file"); | 41 GetFileName("runtime/tests/vm/data/fixed_length_file"); |
42 File* file = File::Open(kFilename, false); | 42 File* file = File::Open(kFilename, File::kRead); |
43 EXPECT(file != NULL); | 43 EXPECT(file != NULL); |
44 EXPECT_EQ(42, file->Length()); | 44 EXPECT_EQ(42, file->Length()); |
45 delete file; | 45 delete file; |
46 } | 46 } |
47 | 47 |
48 | 48 |
49 UNIT_TEST_CASE(FilePosition) { | 49 UNIT_TEST_CASE(FilePosition) { |
50 char buf[42]; | 50 char buf[42]; |
51 const char* kFilename = | 51 const char* kFilename = |
52 GetFileName("runtime/tests/vm/data/fixed_length_file"); | 52 GetFileName("runtime/tests/vm/data/fixed_length_file"); |
53 File* file = File::Open(kFilename, false); | 53 File* file = File::Open(kFilename, File::kRead); |
54 EXPECT(file != NULL); | 54 EXPECT(file != NULL); |
55 EXPECT(file->ReadFully(buf, 12)); | 55 EXPECT(file->ReadFully(buf, 12)); |
56 EXPECT_EQ(12, file->Position()); | 56 EXPECT_EQ(12, file->Position()); |
57 EXPECT(file->ReadFully(buf, 6)); | 57 EXPECT(file->ReadFully(buf, 6)); |
58 EXPECT_EQ(18, file->Position()); | 58 EXPECT_EQ(18, file->Position()); |
59 delete file; | 59 delete file; |
60 } | 60 } |
OLD | NEW |