ebbc2020a2
Review URL: https://codereview.chromium.org//14341015 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22032 260f80e4-7a28-3924-810f-c04153c831b5
65 lines
1.7 KiB
C++
65 lines
1.7 KiB
C++
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
#include "bin/file.h"
|
|
#include "platform/assert.h"
|
|
#include "platform/globals.h"
|
|
#include "vm/unit_test.h"
|
|
|
|
|
|
namespace dart {
|
|
namespace bin {
|
|
|
|
// Helper method to be able to run the test from the runtime
|
|
// directory, or the top directory.
|
|
static const char* GetFileName(const char* name) {
|
|
if (File::Exists(name)) {
|
|
return name;
|
|
} else {
|
|
static const int kRuntimeLength = strlen("runtime/");
|
|
return name + kRuntimeLength;
|
|
}
|
|
}
|
|
|
|
|
|
UNIT_TEST_CASE(Read) {
|
|
const char* kFilename = GetFileName("runtime/bin/file_test.cc");
|
|
File* file = File::Open(kFilename, File::kRead);
|
|
EXPECT(file != NULL);
|
|
char buffer[16];
|
|
buffer[0] = '\0';
|
|
EXPECT(file->ReadFully(buffer, 13)); // ReadFully returns true.
|
|
buffer[13] = '\0';
|
|
EXPECT_STREQ("// Copyright ", buffer);
|
|
EXPECT(!file->WriteByte(1)); // Cannot write to a read-only file.
|
|
delete file;
|
|
}
|
|
|
|
|
|
UNIT_TEST_CASE(FileLength) {
|
|
const char* kFilename =
|
|
GetFileName("runtime/tests/vm/data/fixed_length_file");
|
|
File* file = File::Open(kFilename, File::kRead);
|
|
EXPECT(file != NULL);
|
|
EXPECT_EQ(42, file->Length());
|
|
delete file;
|
|
}
|
|
|
|
|
|
UNIT_TEST_CASE(FilePosition) {
|
|
char buf[42];
|
|
const char* kFilename =
|
|
GetFileName("runtime/tests/vm/data/fixed_length_file");
|
|
File* file = File::Open(kFilename, File::kRead);
|
|
EXPECT(file != NULL);
|
|
EXPECT(file->ReadFully(buf, 12));
|
|
EXPECT_EQ(12, file->Position());
|
|
EXPECT(file->ReadFully(buf, 6));
|
|
EXPECT_EQ(18, file->Position());
|
|
delete file;
|
|
}
|
|
|
|
} // namespace bin
|
|
} // namespace dart
|