Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1850,7 +1850,9 @@ public void onError(Throwable e) {
* @return
*/
public TrashBinFile toTrashBinFile(Context context) {
return new TrashBinFile(getName(context), isDirectory(context), path, length(context), null);
boolean directory = isDirectory(context);
long size = directory ? folderSize(context) : length(context);
return new TrashBinFile(getName(context), directory, path, size, null);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@ import com.amaze.filemanager.application.AppConfig
import com.amaze.filemanager.fileoperations.filesystem.OpenMode
import com.amaze.filemanager.shadows.ShadowMultiDex
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TemporaryFolder
import org.junit.runner.RunWith
import org.robolectric.annotation.Config
import java.io.File
Expand All @@ -43,6 +47,63 @@ import kotlin.random.Random
@Config(shadows = [ShadowMultiDex::class], sdk = [LOLLIPOP, P, Build.VERSION_CODES.R])
@Suppress("StringLiteralDuplication")
class HybridFileTest {
@get:Rule
val tempFolder = TemporaryFolder()

/**
* Test [HybridFile.toTrashBinFile] includes nested file bytes in directory metadata.
*/
@Test
fun testToTrashBinFileIncludesNestedDirectoryContentsSize() {
val directory = tempFolder.newFolder("folder with spaces あいうえお")
File(directory, "first.bin").writeBytes(ByteArray(57))
val nestedDirectory = File(directory, "nested").apply { mkdir() }
File(nestedDirectory, "second.bin").writeBytes(ByteArray(4099))
File(nestedDirectory, "empty").mkdir()

val trashBinFile =
HybridFile(OpenMode.FILE, directory.absolutePath)
.toTrashBinFile(AppConfig.getInstance())

assertEquals(4156L, trashBinFile.sizeBytes)
assertTrue(trashBinFile.isDirectory)
assertEquals(directory.name, trashBinFile.fileName)
assertEquals(directory.absolutePath, trashBinFile.path)
}

/**
* Test [HybridFile.toTrashBinFile] records zero bytes for an empty directory.
*/
@Test
fun testToTrashBinFileEmptyDirectoryHasZeroSize() {
val directory = tempFolder.newFolder("empty")

val trashBinFile =
HybridFile(OpenMode.FILE, directory.absolutePath)
.toTrashBinFile(AppConfig.getInstance())

assertEquals(0L, trashBinFile.sizeBytes)
assertTrue(trashBinFile.isDirectory)
}

/**
* Test [HybridFile.toTrashBinFile] preserves regular file size, name, path and type.
*/
@Test
fun testToTrashBinFilePreservesRegularFileMetadata() {
val file = tempFolder.newFile("file with spaces あいうえお.bin")
file.writeBytes(ByteArray(57))

val trashBinFile =
HybridFile(OpenMode.FILE, file.absolutePath)
.toTrashBinFile(AppConfig.getInstance())

assertEquals(57L, trashBinFile.sizeBytes)
assertFalse(trashBinFile.isDirectory)
assertEquals(file.name, trashBinFile.fileName)
assertEquals(file.absolutePath, trashBinFile.path)
}

/**
* Test [HybridFile.getParent]
*/
Expand Down