1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.util.io;
18 
19 import java.nio.file.attribute.BasicFileAttributes;
20 import java.nio.file.attribute.FileTime;
21 import java.util.concurrent.TimeUnit;
22 
23 /**
24  * Fake implementation of {@link BasicFileAttributes} (for use in tests)
25  */
26 public class FakeBasicFileAttributes implements BasicFileAttributes {
27     private FileTime mLastModifiedTime = FileTime.from(0, TimeUnit.MILLISECONDS);
28     private FileTime mLastAccessTime = FileTime.from(0, TimeUnit.MILLISECONDS);
29     private FileTime mCreationTime = FileTime.from(0, TimeUnit.MILLISECONDS);
30     private boolean mIsRegularFile = true;
31     private boolean mIsDirectory = false;
32     private boolean mIsSymbolicLink = false;
33     private boolean mIsOther = false;
34     private long mSize = 0;
35     private Object mFileKey = null;
36 
37     @Override
lastModifiedTime()38     public FileTime lastModifiedTime() {
39         return mLastModifiedTime;
40     }
41 
42     @Override
lastAccessTime()43     public FileTime lastAccessTime() {
44         return mLastAccessTime;
45     }
46 
47     @Override
creationTime()48     public FileTime creationTime() {
49         return mCreationTime;
50     }
51 
52     @Override
isRegularFile()53     public boolean isRegularFile() {
54         return mIsRegularFile;
55     }
56 
57     @Override
isDirectory()58     public boolean isDirectory() {
59         return mIsDirectory;
60     }
61 
62     @Override
isSymbolicLink()63     public boolean isSymbolicLink() {
64         return mIsSymbolicLink;
65     }
66 
67     @Override
isOther()68     public boolean isOther() {
69         return mIsOther;
70     }
71 
72     @Override
size()73     public long size() {
74         return mSize;
75     }
76 
77     @Override
fileKey()78     public Object fileKey() {
79         return mFileKey;
80     }
81 
setLastModifiedTime(long millis)82     public FakeBasicFileAttributes setLastModifiedTime(long millis) {
83         mLastModifiedTime = FileTime.from(millis, TimeUnit.MILLISECONDS);
84         return this;
85     }
86 
setLastAccessTime(long millis)87     public FakeBasicFileAttributes setLastAccessTime(long millis) {
88         mLastAccessTime = FileTime.from(millis, TimeUnit.MILLISECONDS);
89         return this;
90     }
91 
setCreationTime(long millis)92     public FakeBasicFileAttributes setCreationTime(long millis) {
93         mCreationTime = FileTime.from(millis, TimeUnit.MILLISECONDS);
94         return this;
95     }
96 
setRegularFile(boolean regularFile)97     public FakeBasicFileAttributes setRegularFile(boolean regularFile) {
98         mIsRegularFile = regularFile;
99         return this;
100     }
101 
setDirectory(boolean directory)102     public FakeBasicFileAttributes setDirectory(boolean directory) {
103         mIsDirectory = directory;
104         return this;
105     }
106 
setSymbolicLink(boolean symbolicLink)107     public FakeBasicFileAttributes setSymbolicLink(boolean symbolicLink) {
108         mIsSymbolicLink = symbolicLink;
109         return this;
110     }
111 
setOther(boolean other)112     public FakeBasicFileAttributes setOther(boolean other) {
113         mIsOther = other;
114         return this;
115     }
116 
setSize(long size)117     public FakeBasicFileAttributes setSize(long size) {
118         mSize = size;
119         return this;
120     }
121 
setFileKey(Object fileKey)122     public FakeBasicFileAttributes setFileKey(Object fileKey) {
123         mFileKey = fileKey;
124         return this;
125     }
126 }
127