| 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 |