Bug 14: Added tests for class MapStorage
This commit is contained in:
parent
07a2c60c75
commit
60a94ab1ec
src
main/java/com/pixelgamelibrary/api/storage/map
test/java/com/pixelgamelibrary/api/storage/map
@ -348,6 +348,9 @@ public class MapStorage implements Storage {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isdir(String name) {
|
public boolean isdir(String name) {
|
||||||
|
if(name.equals(SLASH)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// Check if the path is a directory
|
// Check if the path is a directory
|
||||||
return filetype(name) == MapFileType.DIRECTORY;
|
return filetype(name) == MapFileType.DIRECTORY;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,223 @@
|
|||||||
|
package com.pixelgamelibrary.api.storage.map;
|
||||||
|
|
||||||
|
import com.pixelgamelibrary.api.Pixel;
|
||||||
|
import com.pixelgamelibrary.api.Platform;
|
||||||
|
import com.pixelgamelibrary.api.interfaces.AppI;
|
||||||
|
import com.pixelgamelibrary.api.interfaces.AssetI;
|
||||||
|
import com.pixelgamelibrary.api.interfaces.AudioI;
|
||||||
|
import com.pixelgamelibrary.api.interfaces.GraphicsI;
|
||||||
|
import com.pixelgamelibrary.api.interfaces.InputI;
|
||||||
|
import com.pixelgamelibrary.api.interfaces.NetI;
|
||||||
|
import com.pixelgamelibrary.api.interfaces.PixelBackend;
|
||||||
|
import com.pixelgamelibrary.api.interfaces.StorageI;
|
||||||
|
import com.pixelgamelibrary.api.interfaces.UtilsI;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
// Tests for MapStorage class
|
||||||
|
public class MapStorageTest {
|
||||||
|
|
||||||
|
private SimpleMap mockMap;
|
||||||
|
private MapStorage mapStorage;
|
||||||
|
|
||||||
|
@org.junit.jupiter.api.BeforeAll public static void setupStart() {
|
||||||
|
|
||||||
|
PixelBackend dummyPixelBackend = new PixelBackend() {
|
||||||
|
@Override
|
||||||
|
public AppI app() {
|
||||||
|
return new AppI() {
|
||||||
|
@Override
|
||||||
|
public Platform getPlatform() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exit() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void log(String msg) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void error(String msg) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void debug(String msg) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GraphicsI graphics() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AudioI audio() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InputI input() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NetI net() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AssetI asset() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StorageI storage() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UtilsI utils() {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Pixel.initBackend(dummyPixelBackend);
|
||||||
|
}
|
||||||
|
@BeforeEach
|
||||||
|
public void setup() {
|
||||||
|
mockMap = Mockito.mock(SimpleMap.class); // Mocking the SimpleMap class
|
||||||
|
mapStorage = new MapStorage(mockMap); // Initialize MapStorage with the mocked map
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMkdirSuccess() {
|
||||||
|
when(mockMap.contains("/")).thenReturn(true); // Simulate no directory exists
|
||||||
|
when(mockMap.contains("/newDir")).thenReturn(false); // Simulate no directory exists
|
||||||
|
|
||||||
|
String result = mapStorage.mkdir("/newDir");
|
||||||
|
|
||||||
|
assertEquals("", result); // Success should return an empty string
|
||||||
|
verify(mockMap).putString("/newDir", "DIRECTORY::::::::");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMkdirAlreadyExists() {
|
||||||
|
when(mockMap.contains("/")).thenReturn(true); // Root irectory already exists
|
||||||
|
when(mockMap.contains("/newDir")).thenReturn(true); // Directory already exists
|
||||||
|
|
||||||
|
String result = mapStorage.mkdir("/newDir");
|
||||||
|
|
||||||
|
assertEquals("Cannot create new directory, because path already exists: /newDir", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCdChangeDirectorySuccess() {
|
||||||
|
when(mockMap.contains("/")).thenReturn(true);
|
||||||
|
when(mockMap.contains("/newDir")).thenReturn(true);
|
||||||
|
when(mockMap.getString("/")).thenReturn("DIRECTORY::::::::");
|
||||||
|
when(mockMap.getString("/newDir")).thenReturn("DIRECTORY::::::::");
|
||||||
|
|
||||||
|
String result = mapStorage.cd("/newDir");
|
||||||
|
|
||||||
|
assertEquals("", result); // Success should return an empty string
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCdPathDoesNotExist() {
|
||||||
|
when(mockMap.contains("/nonExistent")).thenReturn(false);
|
||||||
|
|
||||||
|
String result = mapStorage.cd("/nonExistent");
|
||||||
|
|
||||||
|
assertEquals("Path does not exist: /nonExistent", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTouchCreateFileSuccess() {
|
||||||
|
when(mockMap.contains("/")).thenReturn(true); // Root exists
|
||||||
|
when(mockMap.getString("/")).thenReturn("DIRECTORY::::::::");
|
||||||
|
|
||||||
|
String result = mapStorage.touch("/newFile.txt", "Test content");
|
||||||
|
|
||||||
|
assertEquals("", result); // Success should return an empty string
|
||||||
|
verify(mockMap).putString("/newFile.txt", "FILE::::::::Test content");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTouchFileAlreadyExists() {
|
||||||
|
when(mockMap.contains("/")).thenReturn(true); // File already exists
|
||||||
|
when(mockMap.contains("/newFile.txt")).thenReturn(true); // File already exists
|
||||||
|
|
||||||
|
String result = mapStorage.touch("/newFile.txt", "Test content");
|
||||||
|
|
||||||
|
assertEquals("Cannot create new file, because path already exists: /newFile.txt", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReadTextFile() {
|
||||||
|
when(mockMap.contains("/file.txt")).thenReturn(true);
|
||||||
|
when(mockMap.getString("/file.txt")).thenReturn("FILE::::::::Hello World");
|
||||||
|
|
||||||
|
String content = mapStorage.readtext("/file.txt");
|
||||||
|
|
||||||
|
assertEquals("Hello World", content);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReadTextFileDoesNotExist() {
|
||||||
|
when(mockMap.contains("/file.txt")).thenReturn(false);
|
||||||
|
|
||||||
|
String content = mapStorage.readtext("/file.txt");
|
||||||
|
|
||||||
|
assertNull(content);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRmFile() {
|
||||||
|
when(mockMap.contains("/file.txt")).thenReturn(true);
|
||||||
|
|
||||||
|
boolean result = mapStorage.rm("/file.txt");
|
||||||
|
|
||||||
|
assertTrue(result); // File successfully removed
|
||||||
|
verify(mockMap).remove("/file.txt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRmFileDoesNotExist() {
|
||||||
|
when(mockMap.contains("/file.txt")).thenReturn(false);
|
||||||
|
|
||||||
|
boolean result = mapStorage.rm("/file.txt");
|
||||||
|
|
||||||
|
assertFalse(result); // File does not exist, so removal fails
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDepth() {
|
||||||
|
assertEquals(0, mapStorage.depth("/"));
|
||||||
|
assertEquals(1, mapStorage.depth("/dir"));
|
||||||
|
assertEquals(2, mapStorage.depth("/dir/subdir"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLs() {
|
||||||
|
when(mockMap.keyList()).thenReturn(List.of("/dir/file1", "/dir/file2", "/dir/subdir/file3"));
|
||||||
|
|
||||||
|
List<String> files = mapStorage.ls("/dir");
|
||||||
|
|
||||||
|
assertEquals(2, files.size());
|
||||||
|
assertTrue(files.contains("/dir/file1"));
|
||||||
|
assertTrue(files.contains("/dir/file2"));
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user