blob: a836d8382bea7085fcee90df4f6440df18c3fe9d [file] [log] [blame]
Brian Carlstromdb4d5402011-08-09 12:18:28 -07001// Copyright 2009 Google Inc. All Rights Reserved.
2
3#include "common_test.h"
4#include "file.h"
5#include "os.h"
6#include "scoped_ptr.h"
7
8#include "gtest/gtest.h"
9
10namespace art {
11
Brian Carlstromf734cf52011-08-17 16:28:14 -070012class FileTest : public CommonTest {};
Brian Carlstromdb4d5402011-08-09 12:18:28 -070013
14TEST_F(FileTest, Read) {
15 std::string filename = GetLibCoreDexFileName();
Brian Carlstrom4e777d42011-08-15 13:53:52 -070016 scoped_ptr<File> file(OS::OpenFile(filename.c_str(), false));
Brian Carlstromdb4d5402011-08-09 12:18:28 -070017 ASSERT_TRUE(file != NULL);
18 EXPECT_STREQ(filename.c_str(), file->name());
19 char buffer[3];
20 buffer[0] = '\0';
21 EXPECT_TRUE(file->ReadFully(buffer, 2)); // ReadFully returns true.
22 buffer[2] = '\0';
23 EXPECT_STREQ("PK", buffer); // zip file magic
24 EXPECT_FALSE(file->WriteByte(1)); // Cannot write to a read-only file.
25}
26
27
28TEST_F(FileTest, FileLength) {
29 std::string filename = GetLibCoreDexFileName();
Brian Carlstrom4e777d42011-08-15 13:53:52 -070030 scoped_ptr<File> file(OS::OpenFile(filename.c_str(), false));
Brian Carlstromdb4d5402011-08-09 12:18:28 -070031 ASSERT_TRUE(file != NULL);
32 EXPECT_NE(0, file->Length());
33}
34
35
36TEST_F(FileTest, FilePosition) {
37 std::string filename = GetLibCoreDexFileName();
Brian Carlstrom4e777d42011-08-15 13:53:52 -070038 scoped_ptr<File> file(OS::OpenFile(filename.c_str(), false));
Brian Carlstromdb4d5402011-08-09 12:18:28 -070039 ASSERT_TRUE(file != NULL);
40 char buf[4];
41 EXPECT_TRUE(file->ReadFully(buf, 2));
42 EXPECT_EQ(2, file->Position());
43 EXPECT_TRUE(file->ReadFully(buf, 2));
44 EXPECT_EQ(4, file->Position());
45}
46
47} // namespace art