Package com.neophob.sematrix.core.properties

Source Code of com.neophob.sematrix.core.properties.PropertiesHelperTest

/**
* Copyright (C) 2011-2013 Michael Vogt <michu@neophob.com>
*
* This file is part of PixelController.
*
* PixelController is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PixelController is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PixelController.  If not, see <http://www.gnu.org/licenses/>.
*/
package com.neophob.sematrix.core.properties;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.junit.Test;

import com.neophob.sematrix.core.glue.Collector;
import com.neophob.sematrix.core.layout.Layout.LayoutName;
import com.neophob.sematrix.core.output.ArtnetDevice;
import com.neophob.sematrix.core.output.E1_31Device;
import com.neophob.sematrix.core.output.NullDevice;
import com.neophob.sematrix.core.output.OutputDeviceEnum;
import com.neophob.sematrix.core.output.UdpDevice;
import com.neophob.sematrix.core.output.gamma.RGBAdjust;
import com.neophob.sematrix.core.properties.ApplicationConfigurationHelper;
import com.neophob.sematrix.core.properties.ColorFormat;
import com.neophob.sematrix.core.properties.ConfigConstant;
import com.neophob.sematrix.core.properties.DeviceConfig;

/**
* test start
* @author michu
*
*/
public class PropertiesHelperTest {

    @Test
    public void testEmptyConfig() {     
        Properties config = new Properties();    
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(1, ph.getNrOfScreens());
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());

        assertEquals(0, ph.getI2cAddr().size());
        assertEquals(0, ph.getLpdDevice().size());
        assertEquals(20, ph.parseFps());
        assertEquals(OutputDeviceEnum.NULL, ph.getOutputDevice());
    }

    @Test
    public void testPixelInvadersDefaultConfig() {    
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_ROW2, "ROTATE_90,NO_ROTATE");      
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);
       
        List<Integer> order = ph.getPanelOrder();
        assertEquals(Integer.valueOf(0), order.get(0));
        assertEquals(Integer.valueOf(1), order.get(1));
        assertEquals(Integer.valueOf(2), order.get(2));
        assertEquals(Integer.valueOf(3), order.get(3));
       
        List<ColorFormat> colorFormat = ph.getColorFormat();
        assertEquals(ColorFormat.RGB, colorFormat.get(0));
        assertEquals(ColorFormat.RGB, colorFormat.get(1));
        assertEquals(ColorFormat.RGB, colorFormat.get(2));
        assertEquals(ColorFormat.RGB, colorFormat.get(3));       
    }
   
    @Test
    public void testPixelInvadersConfig() {    
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180, NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_ROW2, "ROTATE_90, NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_PANEL_ORDER, "0,3, 1,2");
       
        config.put(ConfigConstant.PIXELINVADERS_COLORADJUST_R+"1", "100");
        config.put(ConfigConstant.PIXELINVADERS_COLORADJUST_G+"1", "130  ");
        config.put(ConfigConstant.PIXELINVADERS_COLORADJUST_B+"1", "150");

        config.put(ConfigConstant.PIXELINVADERS_COLORADJUST_R+"2", "4");
        config.put(ConfigConstant.PIXELINVADERS_COLORADJUST_G+"2", "-222");
        config.put(ConfigConstant.PIXELINVADERS_COLORADJUST_B+"2", "zzz");

        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(4, ph.getNrOfScreens());
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
       
        List<Integer> order = ph.getPanelOrder();
        assertEquals(Integer.valueOf(0), order.get(0));
        assertEquals(Integer.valueOf(3), order.get(1));
        assertEquals(Integer.valueOf(1), order.get(2));
        assertEquals(Integer.valueOf(2), order.get(3));
       
        assertEquals(0, ph.getI2cAddr().size());
        assertEquals(4, ph.getLpdDevice().size());
        assertEquals(OutputDeviceEnum.PIXELINVADERS, ph.getOutputDevice());
       
        Map<Integer, RGBAdjust> correction = ph.getPixelInvadersCorrectionMap();
        assertFalse(correction.containsKey(ConfigConstant.PIXELINVADERS_COLORADJUST_R+"0"));
        assertFalse(correction.containsKey(ConfigConstant.PIXELINVADERS_COLORADJUST_G+"0"));
        assertFalse(correction.containsKey(ConfigConstant.PIXELINVADERS_COLORADJUST_B+"0"));

        RGBAdjust corr = correction.get(1);
        assertTrue(corr!=null);
        assertEquals(100, corr.getR());
        assertEquals(130, corr.getG());
        assertEquals(150, corr.getB());
       
        corr = correction.get(2);
        assertTrue(corr!=null);
        assertEquals(4, corr.getR());
        assertEquals(0, corr.getG());
        assertEquals(0, corr.getB());       
    }

    @Test
    public void testPixelInvadersNetConfig() {    
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180, NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_ROW2, "ROTATE_90, NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_PANEL_ORDER, "0,3, 1,2");
        config.put(ConfigConstant.PIXELINVADERS_NET_IP, "127.0.0.1");
        config.put(ConfigConstant.PIXELINVADERS_NET_PORT, "5333");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(4, ph.getNrOfScreens());
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
       
        List<Integer> order = ph.getPanelOrder();
        assertEquals(Integer.valueOf(0), order.get(0));
        assertEquals(Integer.valueOf(3), order.get(1));
        assertEquals(Integer.valueOf(1), order.get(2));
        assertEquals(Integer.valueOf(2), order.get(3));
       
        assertEquals(0, ph.getI2cAddr().size());
        assertEquals(4, ph.getLpdDevice().size());
        assertEquals(OutputDeviceEnum.PIXELINVADERS_NET, ph.getOutputDevice());
       
        Map<Integer, RGBAdjust> correction = ph.getPixelInvadersCorrectionMap();
        assertTrue(correction!=null);
    }

    @Test
    public void testPixelInvadersAdvancedConfig() {    
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180_FLIPPEDY,NO_ROTATE,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_ROW2, "ROTATE_180_FLIPPEDY,NO_ROTATE,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_PANEL_ORDER, "0,3,1,4,2,5");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(6, ph.getNrOfScreens());
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
       
        List<ColorFormat> colorFormat = ph.getColorFormat();
        List<Integer> order = ph.getPanelOrder();
        List<DeviceConfig> displayOptions = ph.getLpdDevice();
       
        for (int ofs=0; ofs<ph.getNrOfScreens(); ofs++) {
            int panelNr = order.get(ofs);           
            System.out.println("visual "+ofs+", panel ofs: "+panelNr+", layout: "+displayOptions.get(panelNr)+
                " colorformat: "+colorFormat.get(panelNr));
        }
    }
   
    @Test
    public void testPixelInvadersAndNullOutputConfig() {    
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_BLACKLIST, "/dev/tty.Bluetooth-Serial-1,/dev/cu.Bluetooth-Serial-1,/dev/cu.Bluetooth-Modem,/dev/cu.Bluetooth-Serial-2,/dev/cu.Bluetooth-PDA-Sync,/dev/tty.Bluetooth-PDA-Sync,/dev/cu.Bluetooth-Modem,/dev/tty.Bluetooth-Modem,/dev/tty.Bluetooth-Serial-2");
        config.put(ConfigConstant.NULLOUTPUT_ROW1, "1");
        config.put(ConfigConstant.NULLOUTPUT_ROW2, "0");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_X, "16");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_Y, "16");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);
       
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
        assertEquals(2, ph.getNrOfScreens());
    }

    @Test
    public void testPixelInvadersNetAndNullOutputConfig() {    
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_BLACKLIST, "/dev/tty.Bluetooth-Serial-1,/dev/cu.Bluetooth-Serial-1,/dev/cu.Bluetooth-Modem,/dev/cu.Bluetooth-Serial-2,/dev/cu.Bluetooth-PDA-Sync,/dev/tty.Bluetooth-PDA-Sync,/dev/cu.Bluetooth-Modem,/dev/tty.Bluetooth-Modem,/dev/tty.Bluetooth-Serial-2");
        config.put(ConfigConstant.PIXELINVADERS_NET_IP, "127.0.0.1");
        config.put(ConfigConstant.NULLOUTPUT_ROW1, "1");
        config.put(ConfigConstant.NULLOUTPUT_ROW2, "0");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_X, "16");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_Y, "16");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);
       
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
        assertEquals(2, ph.getNrOfScreens());
    }
   
    @Test
    public void testInvalidPixelInvadersConfigOne() {    
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_ROW2, "ROTATE_90,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_PANEL_ORDER, "0,4,1,2");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        //panel order is ignored, due invalid value
        List<Integer> order = ph.getPanelOrder();
        assertEquals(Integer.valueOf(0), order.get(0));
        assertEquals(Integer.valueOf(1), order.get(1));
        assertEquals(Integer.valueOf(2), order.get(2));
        assertEquals(Integer.valueOf(3), order.get(3));
    }

    @Test
    public void testInvalidPixelInvadersConfigTwo() {    
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_ROW2, "ROTATE_90,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_PANEL_ORDER, "0");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        //panel order is ignored, due invalid value
        List<Integer> order = ph.getPanelOrder();
        assertEquals(Integer.valueOf(0), order.get(0));
        assertEquals(Integer.valueOf(1), order.get(1));
        assertEquals(Integer.valueOf(2), order.get(2));
        assertEquals(Integer.valueOf(3), order.get(3));
    }

    @Test
    public void testRainbowduinosConfig() {    
        Properties config = new Properties();
        config.put(ConfigConstant.RAINBOWDUINO_V2_ROW1, "5, 6");
        config.put(ConfigConstant.RAINBOWDUINO_V2_ROW2, "0x7,8");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(4, ph.getNrOfScreens());
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());

        assertEquals(4, ph.getI2cAddr().size());
        assertEquals(0, ph.getLpdDevice().size());
        assertEquals(OutputDeviceEnum.RAINBOWDUINO_V2, ph.getOutputDevice());
    }

    @Test
    public void testRainbowduinosV3Config() {    
        Properties config = new Properties();
        config.put(ConfigConstant.RAINBOWDUINO_V3_ROW1, "/dev/aaa,/dev/bbb");
        config.put(ConfigConstant.RAINBOWDUINO_V3_ROW2, "/dev/ccc, /dev/ddd");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(4, ph.getNrOfScreens());
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
       
        assertEquals(4, ph.getRainbowduinoV3SerialDevices().size());
        assertEquals(0, ph.getLpdDevice().size());
        assertEquals(OutputDeviceEnum.RAINBOWDUINO_V3, ph.getOutputDevice());
       
        assertTrue(ph.getRainbowduinoV3SerialDevices().contains("/dev/aaa"));
        assertTrue(ph.getRainbowduinoV3SerialDevices().contains("/dev/ddd"));
    }

    @Test
    public void testArtnetConfigSimple() {    
        Properties config = new Properties();
        config.put(ConfigConstant.ARTNET_IP, "192.168.1.1");
        config.put(ConfigConstant.ARTNET_ROW1, "NO_ROTATE");
        config.put(ConfigConstant.ARTNET_BROADCAST_ADDR, "255.0.0.0");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(1, ph.getNrOfScreens());
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
        assertEquals(false, ph.isOutputSnakeCabeling());

        assertEquals(0, ph.getI2cAddr().size());
        assertEquals(0, ph.getLpdDevice().size());
        assertEquals(OutputDeviceEnum.ARTNET, ph.getOutputDevice());
       
        ArtnetDevice device = new ArtnetDevice(ph, 1);
        assertTrue(device.isConnected());      
        assertEquals(170, device.getPixelsPerUniverse());
        assertEquals(1, device.getNrOfUniverse());
        assertEquals(0, device.getFirstUniverseId());
    }
       
    @Test
    public void testArtnetConfigAdvanced() {            
      Properties config = new Properties();
        config.put(ConfigConstant.ARTNET_IP, "192.168.1.1");
        config.put(ConfigConstant.ARTNET_PIXELS_PER_UNIVERSE, "333");
        config.put(ConfigConstant.ARTNET_ROW1, "NO_ROTATE");
        config.put(ConfigConstant.ARTNET_ROW2, "NO_ROTATE");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_X, "10");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_Y, "8");
        config.put(ConfigConstant.OUTPUT_DEVICE_SNAKE_CABELING, "true");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(OutputDeviceEnum.ARTNET, ph.getOutputDevice());
        assertEquals(2, ph.getNrOfScreens());
        assertEquals(10, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
        assertEquals(true, ph.isOutputSnakeCabeling());

        ArtnetDevice device = new ArtnetDevice(ph, 1);
        assertEquals(170, device.getPixelsPerUniverse());
    }   

   
    @Test
    public void testE131Config() {    
        Properties config = new Properties();
        config.put(ConfigConstant.E131_IP, "192.168.1.1");     
        config.put(ConfigConstant.E131_ROW1, "NO_ROTATE");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(1, ph.getNrOfScreens());
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
        assertEquals(false, ph.isOutputSnakeCabeling());

        assertEquals(0, ph.getI2cAddr().size());
        assertEquals(0, ph.getLpdDevice().size());
        assertEquals(OutputDeviceEnum.E1_31, ph.getOutputDevice());

        E1_31Device device = new E1_31Device(ph, 1);
        assertFalse(device.isSendMulticast());
        assertEquals(170, device.getPixelsPerUniverse());
        assertEquals(1, device.getNrOfUniverse());
        assertEquals(0, device.getFirstUniverseId());
       
       
       
        config = new Properties();
        config.put(ConfigConstant.E131_IP, "239.255.1.1");
        config.put(ConfigConstant.E131_ROW1, "NO_ROTATE");
        config.put(ConfigConstant.E131_FIRST_UNIVERSE_ID, "1");
        config.put(ConfigConstant.E131_PIXELS_PER_UNIVERSE, "333");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_X, "10");
        config.put(ConfigConstant.OUTPUT_DEVICE_SNAKE_CABELING, "true");
        ph = new ApplicationConfigurationHelper(config);

        assertEquals(OutputDeviceEnum.E1_31, ph.getOutputDevice());
        assertEquals(1, ph.getNrOfScreens());
        assertEquals(10, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
        assertEquals(true, ph.isOutputSnakeCabeling());

        assertEquals(0, ph.getI2cAddr().size());
        assertEquals(0, ph.getLpdDevice().size());
        assertEquals(OutputDeviceEnum.E1_31, ph.getOutputDevice());
   
        device = new E1_31Device(ph, 1);
        assertTrue(device.isSendMulticast());   
        assertEquals(1, device.getFirstUniverseId());
        assertEquals(170, device.getPixelsPerUniverse());
    }   

    @Test
    public void testMultipleE131Config() {    
        Properties config = new Properties();
        config.put(ConfigConstant.E131_IP, "192.168.1.1");       
        config.put(ConfigConstant.E131_ROW1, "NO_ROTATE,NO_ROTATE");
        config.put(ConfigConstant.E131_ROW2, "NO_ROTATE,NO_ROTATE");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_X, "10");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_Y, "8");
        config.put(ConfigConstant.OUTPUT_DEVICE_SNAKE_CABELING, "true");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(4, ph.getNrOfScreens());
        assertEquals(10, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());
        assertEquals(true, ph.isOutputSnakeCabeling());
        assertEquals(4, ph.getPanelOrder().size());
    }
   
    @Test
    public void testMiniDmxConfig() {    
        Properties config = new Properties();
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_X, "10");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_Y, "13");
        config.put(ConfigConstant.OUTPUT_DEVICE_SNAKE_CABELING, "true");
        config.put(ConfigConstant.MINIDMX_BAUDRATE, "115200");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(1, ph.getNrOfScreens());
        assertEquals(10, ph.getDeviceXResolution());
        assertEquals(13, ph.getDeviceYResolution());
        assertEquals(true, ph.isOutputSnakeCabeling());
       
        assertEquals(0, ph.getI2cAddr().size());
        assertEquals(0, ph.getLpdDevice().size());
        assertEquals(OutputDeviceEnum.MINIDMX, ph.getOutputDevice());       
   
   
    @Test
    public void testNullConfig() {    
        Properties config = new Properties();
        config.put(ConfigConstant.NULLOUTPUT_ROW1, "4");
        config.put(ConfigConstant.NULLOUTPUT_ROW2, "4");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(8, ph.getNrOfScreens());
        assertEquals(8, ph.getDeviceXResolution());
        assertEquals(8, ph.getDeviceYResolution());

        assertEquals(0, ph.getI2cAddr().size());
        assertEquals(0, ph.getLpdDevice().size());
        assertEquals(OutputDeviceEnum.NULL, ph.getOutputDevice());
       
        NullDevice device = new NullDevice(ph);
        assertTrue(device.isConnected());      
    }    

    @Test(expected = IllegalArgumentException.class)
    public void testMultipleConfig() {    
        Properties config = new Properties();
        config.put(ConfigConstant.RAINBOWDUINO_V2_ROW1, "4");
        config.put(ConfigConstant.ARTNET_IP, "192.168.4.2");
        config.put(ConfigConstant.ARTNET_ROW1, "NO_ROTATE");
        new ApplicationConfigurationHelper(config);
    }


    @Test(expected = IllegalArgumentException.class)
    public void testMultiple2Config() {    
        Properties config = new Properties();
        config.put(ConfigConstant.RAINBOWDUINO_V2_ROW1, "4");
        config.put(ConfigConstant.PIXELINVADERS_ROW2, "NO_ROTATE");
        new ApplicationConfigurationHelper(config);
    }   

    @Test(expected = IllegalStateException.class)
    public void testLayout() {    
        Properties config = new Properties();
        config.put(ConfigConstant.NULLOUTPUT_ROW1, "4");
        config.put(ConfigConstant.NULLOUTPUT_ROW2, "2");
        new ApplicationConfigurationHelper(config).getLayout();       
    }   

    @Test(expected = IllegalArgumentException.class)
    public void testInvalidCabling() {    
        Properties config = new Properties();
        config.put(ConfigConstant.OUTPUT_MAPPING, "4,6,5, 4,2,1,8");
        config.put(ConfigConstant.OUTPUT_DEVICE_SNAKE_CABELING, "true");
        new ApplicationConfigurationHelper(config).getLayout();       
    }   

    @Test
    public void testValidMapping() {    
        Properties config = new Properties();
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_X, "2");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_Y, "2");
        config.put(ConfigConstant.OUTPUT_MAPPING, "4,6,5,7");
        config.put(ConfigConstant.ARTNET_IP, "1.1.1.1");       
        new ApplicationConfigurationHelper(config).getLayout();       
    }       

    @Test
    public void testShortMappingCount() {    
        Properties config = new Properties();
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_X, "2");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_Y, "2");
        config.put(ConfigConstant.OUTPUT_MAPPING, "4,6");
        config.put(ConfigConstant.ARTNET_IP, "1.1.1.1");
        new ApplicationConfigurationHelper(config).getLayout();       
    }   

    @Test(expected = IllegalArgumentException.class)
    public void testInvalidMappingCount() {    
        Properties config = new Properties();
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_X, "2");
        config.put(ConfigConstant.OUTPUT_DEVICE_RESOLUTION_Y, "2");
        config.put(ConfigConstant.OUTPUT_MAPPING, "4,6,3,1,5");
        config.put(ConfigConstant.ARTNET_IP, "1.1.1.1");
        new ApplicationConfigurationHelper(config).getLayout();       
    }   

    @Test
    public void testHorizontalLayout() {    
        Properties config = new Properties();
        config.put(ConfigConstant.NULLOUTPUT_ROW1, "3");
        config.put(ConfigConstant.NULLOUTPUT_ROW2, "0");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);       
        assertEquals(3, ph.getNrOfScreens());
        assertEquals(LayoutName.HORIZONTAL, ph.getLayout().getLayoutName());
    }   

    @Test
    public void testBoxLayout() {    
        Properties config = new Properties();
        config.put(ConfigConstant.NULLOUTPUT_ROW1, "3");
        config.put(ConfigConstant.NULLOUTPUT_ROW2, "3");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);       
        assertEquals(6, ph.getNrOfScreens());
        assertEquals(LayoutName.BOX, ph.getLayout().getLayoutName());
    }   
   
    @Test
    public void testLoadPresetOnStartup() {
        Properties config = new Properties();
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);
        int presetNr = ph.loadPresetOnStart(Collector.NR_OF_PRESET_SLOTS);
        assertEquals(-1, presetNr);
       
        config.put(ConfigConstant.STARTUP_LOAD_PRESET_NR, "22");
        ph = new ApplicationConfigurationHelper(config);
        presetNr = ph.loadPresetOnStart(Collector.NR_OF_PRESET_SLOTS);
        assertEquals(22, presetNr);
       
        config = new Properties();
        config.put(ConfigConstant.STARTUP_LOAD_PRESET_NR, "2222");
        ph = new ApplicationConfigurationHelper(config);
        presetNr = ph.loadPresetOnStart(Collector.NR_OF_PRESET_SLOTS);
        assertEquals(-1, presetNr);
    }
   

    @Test
    public void testUdpDevice() {
        Properties config = new Properties();       
        config.put(ConfigConstant.UDP_IP, "1.2.3.4");
        config.put(ConfigConstant.UDP_PORT, "15");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);
        assertEquals(OutputDeviceEnum.UDP, ph.getOutputDevice());
        assertEquals("1.2.3.4", ph.getUdpIp());
        assertEquals(15, ph.getUdpPort());
       
        UdpDevice device = new UdpDevice(ph);
        assertTrue(device.isConnected());              
    }

    @Test
    public void testMissingRgbValue() {
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180,NO_ROTATE");
        config.put(ConfigConstant.CFG_PANEL_COLOR_ORDER, "RBG");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(2, ph.getNrOfScreens());
        assertEquals(ColorFormat.RBG, ph.getColorFormat().get(0));       
        assertEquals(ColorFormat.RGB, ph.getColorFormat().get(1));       
    }
   
    @Test
    public void testRgbValue() {
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180,NO_ROTATE");
        config.put(ConfigConstant.CFG_PANEL_COLOR_ORDER, "RBG, BRG");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);

        assertEquals(2, ph.getNrOfScreens());
        assertEquals(ColorFormat.RBG, ph.getColorFormat().get(0));       
        assertEquals(ColorFormat.BRG, ph.getColorFormat().get(1));       
    }
   
    @Test
    public void testPixelInvadersBlacklist() {    
        final String devOne = "/dev/blah";
        final String devTwo = "/dev/two";
       
        Properties config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_BLACKLIST, devOne);
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);       
        assertEquals(ph.getPixelInvadersBlacklist().get(0), devOne);

        config = new Properties();
        config.put(ConfigConstant.PIXELINVADERS_ROW1, "ROTATE_180,NO_ROTATE");
        config.put(ConfigConstant.PIXELINVADERS_BLACKLIST, devOne+","+devTwo);
        ph = new ApplicationConfigurationHelper(config);
       
        boolean foundOne=false, foundTwo=false;
        for (String s: ph.getPixelInvadersBlacklist()) {
            if (s.equalsIgnoreCase(devOne)) {
                foundOne = true;
            }
            if (s.equalsIgnoreCase(devTwo)) {
                foundTwo = true;
            }
        }
        assertEquals(foundOne, true);
        assertEquals(foundTwo, true);
    }
   
    @Test
    public void testTpm2() {
        Properties config = new Properties();       
        config.put(ConfigConstant.TPM2_BAUDRATE, "128000");
        config.put(ConfigConstant.TPM2_DEVICE, "/dev/blah");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);
        assertEquals(OutputDeviceEnum.TPM2, ph.getOutputDevice());
    }

    @Test
    public void testTpm2Net() {
        Properties config = new Properties();       
        config.put(ConfigConstant.TPM2NET_IP, "127.0.0.1");
        config.put(ConfigConstant.TPM2NET_ROW1, "ROTATE_180,NO_ROTATE");
        config.put(ConfigConstant.TPM2NET_ROW2, "NO_ROTATE, NO_ROTATE");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);
        assertEquals(OutputDeviceEnum.TPM2NET, ph.getOutputDevice());
        assertEquals(4, ph.getTpm2NetDevice().size());
        assertEquals("127.0.0.1", ph.getTpm2NetIpAddress());       
    }


    @Test
    public void testNegativeSettings() {
        Properties config = new Properties();       
        config.put(ConfigConstant.ADDITIONAL_VISUAL_SCREENS, "-20");       
        config.put(ConfigConstant.NULLOUTPUT_ROW1, "1");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);
       
        assertEquals(0, ph.getNrOfAdditionalVisuals());
    }

    @Test
    public void testSoundSilence() {     
        Properties config = new Properties();    
        config.put(ConfigConstant.SOUND_SILENCE_THRESHOLD, "0.06f");
        ApplicationConfigurationHelper ph = new ApplicationConfigurationHelper(config);
        assertEquals(0.06f, ph.getSoundSilenceThreshold(), 0.001);

        config = new Properties();    
        config.put(ConfigConstant.SOUND_SILENCE_THRESHOLD, "  0.06   ");
        ph = new ApplicationConfigurationHelper(config);
        assertEquals(0.06f, ph.getSoundSilenceThreshold(), 0.001);

        config = new Properties();    
        config.put(ConfigConstant.SOUND_SILENCE_THRESHOLD, "");
        ph = new ApplicationConfigurationHelper(config);
        assertEquals(0.0005f, ph.getSoundSilenceThreshold(), 0.001);

        config = new Properties();    
        config.put(ConfigConstant.SOUND_SILENCE_THRESHOLD, "0.pillepalle");
        ph = new ApplicationConfigurationHelper(config);
        assertEquals(0.0005f, ph.getSoundSilenceThreshold(), 0.001);

        config = new Properties();    
        ph = new ApplicationConfigurationHelper(config);
        assertEquals(0.0005f, ph.getSoundSilenceThreshold(), 0.001);

        config = new Properties();    
        config.put(ConfigConstant.SOUND_SILENCE_THRESHOLD, "-0.5");
        ph = new ApplicationConfigurationHelper(config);
        assertEquals(0.0005f, ph.getSoundSilenceThreshold(), 0.001);

        config = new Properties();    
        config.put(ConfigConstant.SOUND_SILENCE_THRESHOLD, "1.5f");
        ph = new ApplicationConfigurationHelper(config);
        assertEquals(0.0005f, ph.getSoundSilenceThreshold(), 0.001);
    }
}
TOP

Related Classes of com.neophob.sematrix.core.properties.PropertiesHelperTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.