package jp.hrtdotnet.java.util;

import junit.framework.TestCase;

public class SystemUtilTest extends TestCase {

    /* (非 Javadoc)
     * @see junit.framework.TestCase#setUp()
     */
    protected void setUp() throws Exception {
        super.setUp();
    }

    /* (非 Javadoc)
     * @see junit.framework.TestCase#tearDown()
     */
    protected void tearDown() throws Exception {
        super.tearDown();
    }
    
    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#getMaxMemory()} のためのテスト・メソッド。
     */
    public void testGetMaxMemory() {
        System.out.println(SystemUtil.getMaxMemory());
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#getFreeMemory()} のためのテスト・メソッド。
     */
    public void testGetFreeMemory() {
        System.out.println(SystemUtil.getFreeMemory());
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#getTotalMemory()} のためのテスト・メソッド。
     */
    public void testGetTotalMemory() {
        System.out.println(SystemUtil.getTotalMemory());
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#getUsedMemory()} のためのテスト・メソッド。
     */
    public void testGetUsedMemory() {
        System.out.println(SystemUtil.getUsedMemory());
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#SystemUtil(int, long, int)} のためのテスト・メソッド。
     */
    public void testSystemUtil() {
        fail("まだ実装されていません");
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#check()} のためのテスト・メソッド。
     */
    public void testCheck() {
        fail("まだ実装されていません");
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#usedMemorySizeCheck()} のためのテスト・メソッド。
     */
    public void testUsedMemorySizeCheck() {
        fail("まだ実装されていません");
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#usedMemorySizeCheck(long)} のためのテスト・メソッド。
     */
    public void testUsedMemorySizeCheckLong() {
        assertFalse(SystemUtil.usedMemorySizeCheck(1));
        assertTrue(SystemUtil.usedMemorySizeCheck(SystemUtil.getMaxMemory()));
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#usedMemoryPercentageCheck()} のためのテスト・メソッド。
     */
    public void testUsedMemoryPercentageCheck() {
        fail("まだ実装されていません");
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#usedMemoryPercentageCheck(int)} のためのテスト・メソッド。
     */
    public void testUsedMemoryPercentageCheck_Int() {
        assertFalse(SystemUtil.usedMemoryPercentageCheck(1));
        assertTrue(SystemUtil.usedMemoryPercentageCheck(100));
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#timerStart(long)} のためのテスト・メソッド。
     */
    public void testTimerStart() {
        SystemUtil mem = new MemoryCheckFlase(SystemUtil.MAXIMIZE_USEDMEMORY_SIZE, 1, 0);
        mem.timerStart(1000);
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#timerCancel()} のためのテスト・メソッド。
     */
    public void testTimerCancel() {
        fail("まだ実装されていません");
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#isRunTimer()} のためのテスト・メソッド。
     */
    public void testIsRunTimer() {
        fail("まだ実装されていません");
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#setStatus()} のためのテスト・メソッド。
     */
    public void testSetStatus() {
        fail("まだ実装されていません");
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#runCheckFalse()} のためのテスト・メソッド。
     */
    public void testRunCheckFalse() {
        fail("まだ実装されていません");
    }

    /**
     * {@link jp.hrtdotnet.java.util.SystemUtil#runCheckTrue()} のためのテスト・メソッド。
     */
    public void testRunCheckTrue() {
        SystemUtil mem = new MemoryCheckTrue(SystemUtil.MAXIMIZE_USEDMEMORY_PERCENTAGE, 0, 100);
        mem.timerStart(1000);
    }
}

class MemoryCheckTrue extends SystemUtil {

    public MemoryCheckTrue(int status, long maximizeMemorySize, int maximizeMemoryPercentage) {
        super(status, maximizeMemorySize, maximizeMemoryPercentage);
    }
    
    protected void runCheckFalse() {
        throw new RuntimeException();
    }

    protected void runCheckTrue() {
        System.out.println("runCheckTrue");
        this.timerCancel();
    }
    
}
class MemoryCheckFlase extends SystemUtil {

    public MemoryCheckFlase(int status, long maximizeMemorySize, int maximizeMemoryPercentage) {
        super(status, maximizeMemorySize, maximizeMemoryPercentage);
    }
    
    protected void runCheckFalse() {
        System.out.println("runCheckFalse");
        this.timerCancel();
    }

    protected void runCheckTrue() {
        throw new RuntimeException();
    }
    
}