blob: 0019c1de36fc7822ffa56ac304c14a6eed74ddff [file] [log] [blame]
Brian Carlstromdb4d5402011-08-09 12:18:28 -07001// Copyright 2009 Google Inc. All Rights Reserved.
2
Brian Carlstromdb4d5402011-08-09 12:18:28 -07003#include "file.h"
Brian Carlstromdb4d5402011-08-09 12:18:28 -07004
Elliott Hughes90a33692011-08-30 13:27:07 -07005#include "UniquePtr.h"
6#include "common_test.h"
Brian Carlstromdb4d5402011-08-09 12:18:28 -07007#include "gtest/gtest.h"
Elliott Hughes90a33692011-08-30 13:27:07 -07008#include "os.h"
Brian Carlstromdb4d5402011-08-09 12:18:28 -07009
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();
Elliott Hughes90a33692011-08-30 13:27:07 -070016 UniquePtr<File> file(OS::OpenFile(filename.c_str(), false));
17 ASSERT_TRUE(file.get() != NULL);
Brian Carlstromdb4d5402011-08-09 12:18:28 -070018 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();
Elliott Hughes90a33692011-08-30 13:27:07 -070030 UniquePtr<File> file(OS::OpenFile(filename.c_str(), false));
31 ASSERT_TRUE(file.get() != NULL);
Brian Carlstromdb4d5402011-08-09 12:18:28 -070032 EXPECT_NE(0, file->Length());
33}
34
35
36TEST_F(FileTest, FilePosition) {
37 std::string filename = GetLibCoreDexFileName();
Elliott Hughes90a33692011-08-30 13:27:07 -070038 UniquePtr<File> file(OS::OpenFile(filename.c_str(), false));
39 ASSERT_TRUE(file.get() != NULL);
Brian Carlstromdb4d5402011-08-09 12:18:28 -070040 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
Brian Carlstrom4a289ed2011-08-16 17:17:49 -070047
48TEST_F(FileTest, FileFd) {
49 std::string filename = GetLibCoreDexFileName();
Elliott Hughes90a33692011-08-30 13:27:07 -070050 UniquePtr<File> file(OS::OpenFile(filename.c_str(), false));
51 ASSERT_TRUE(file.get() != NULL);
Brian Carlstrom4a289ed2011-08-16 17:17:49 -070052 EXPECT_NE(-1, file->Fd());
53}
54
55
Brian Carlstromdb4d5402011-08-09 12:18:28 -070056} // namespace art