/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.iwave.ext.windows.parser;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.List;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import org.junit.Test;
import com.iwave.ext.windows.model.DiskSummary;
;
public class ListDiskParserTest {
private static final String LIST_DISK_FILENAME = "ListDisk";
private static final String ONLINE = "Online";
private static final String OFFLINE = "Offline";
private static final String RESERVED = "Reserved";
private static Logger log = Logger.getLogger(ListDiskParserTest.class);
private static final String FLAG = "*";
@Test
public void test() {
String listDiskOutput = readFile(LIST_DISK_FILENAME);
List<DiskSummary> devices = new ListDiskParser().parseDevices(listDiskOutput);
assertEquals(8, devices.size());
assertDevice1(devices.get(0));
assertDevice2(devices.get(1));
assertDevice4(devices.get(2));
}
private void assertDevice1(DiskSummary device) {
assertEquals("Disk 0", device.getDiskNumber());
assertEquals(ONLINE, device.getStatus());
assertEquals(FLAG, device.getDyn());
assertEquals(" ", device.getGpt());
}
private void assertDevice2(DiskSummary device) {
assertEquals("Disk 5", device.getDiskNumber());
assertEquals(ONLINE, device.getStatus());
assertEquals(" ", device.getDyn());
assertEquals(FLAG, device.getGpt());
}
private void assertDevice4(DiskSummary device) {
assertEquals("Disk 9", device.getDiskNumber());
assertEquals(OFFLINE, device.getStatus());
assertEquals(FLAG, device.getDyn());
assertEquals(FLAG, device.getGpt());
}
protected String readFile(String filename) {
InputStream diskUtilFile = getClass().getResourceAsStream(filename);
StringWriter writer = new StringWriter();
try {
IOUtils.copy(diskUtilFile, writer);
} catch (IOException e) {
// TODO Auto-generated catch block
log.error(e.getMessage(), e);
throw new RuntimeException(e);
}
String text = writer.toString();
return text;
}
}