Files
JIMRI/java/test/jmri/util/CvUtilTest.java
T
2026-06-17 14:00:51 +02:00

231 lines
8.4 KiB
Java

package jmri.util;
import org.junit.jupiter.api.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Test CV Utilities
*
* @author Dave Heap Copyright (C) 2016
*/
public class CvUtilTest {
/**
* Test of expandCvList method, of class CvUtil.
*/
@Test
public void testExpandCvList() {
// System.out.println("expandCvList");
String cvString;
List<String> expResult;
List<String> result;
cvString = "abc";
expResult = new ArrayList<>(Arrays.asList());
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "a(bc";
expResult = new ArrayList<>(Arrays.asList("abc"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "ab)c";
expResult = new ArrayList<>(Arrays.asList("abc"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "a(b)c";
expResult = new ArrayList<>(Arrays.asList("abc"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "127";
expResult = new ArrayList<>(Arrays.asList());
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "CV0.255.256";
expResult = new ArrayList<>(Arrays.asList());
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "";
expResult = new ArrayList<>(Arrays.asList());
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "25.3.250:4";
expResult = new ArrayList<>(Arrays.asList("25.3.250", "25.3.251", "25.3.252", "25.3.253"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "98-103";
expResult = new ArrayList<>(Arrays.asList("98", "99", "100", "101", "102", "103"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "25.3.2(5:4)0";
expResult = new ArrayList<>(Arrays.asList("25.3.250", "25.3.260", "25.3.270", "25.3.280"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "16.3(1-7).25";
expResult = new ArrayList<>(Arrays.asList("16.31.25", "16.32.25", "16.33.25", "16.34.25", "16.35.25", "16.36.25", "16.37.25"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "1,5,7";
expResult = new ArrayList<>(Arrays.asList("1", "5", "7"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "16.3.25(1,2,5,7)";
expResult = new ArrayList<>(Arrays.asList("16.3.251", "16.3.252", "16.3.255", "16.3.257"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "16.3.25(1-7)";
expResult = new ArrayList<>(Arrays.asList("16.3.251", "16.3.252", "16.3.253", "16.3.254", "16.3.255", "16.3.256", "16.3.257"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "16.3-7.254";
expResult = new ArrayList<>(Arrays.asList("16.3.254", "16.4.254", "16.5.254", "16.6.254", "16.7.254"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "T3CV3-7.254";
expResult = new ArrayList<>(Arrays.asList("T3CV3.254", "T3CV4.254", "T3CV5.254", "T3CV6.254", "T3CV7.254"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "16.7-0.254";
expResult = new ArrayList<>(Arrays.asList("16.7.254", "16.6.254", "16.5.254", "16.4.254", "16.3.254", "16.2.254", "16.1.254", "16.0.254"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "16.23-20.254";
expResult = new ArrayList<>(Arrays.asList("16.23.254", "16.22.254", "16.21.254", "16.20.254"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "16.3.25(4-0)";
expResult = new ArrayList<>(Arrays.asList("16.3.254", "16.3.253", "16.3.252", "16.3.251", "16.3.250"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "16.3.2(53-48)";
expResult = new ArrayList<>(Arrays.asList("16.3.253", "16.3.252", "16.3.251", "16.3.250", "16.3.249", "16.3.248"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "T3CV25(4-0).5";
expResult = new ArrayList<>(Arrays.asList("T3CV254.5", "T3CV253.5", "T3CV252.5", "T3CV251.5", "T3CV250.5"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "25.3.250:1";
expResult = new ArrayList<>(Arrays.asList("25.3.250"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "25.3.250:-1";
expResult = new ArrayList<>(Arrays.asList("25.3.250"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "25.3.250:0";
expResult = new ArrayList<>(Arrays.asList("25.3.250"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "25.3.250:-4";
expResult = new ArrayList<>(Arrays.asList("25.3.250", "25.3.249", "25.3.248", "25.3.247"));
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
cvString = "25.3-4.250:4";
expResult = new ArrayList<>(Arrays.asList());
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
// make sure an error message is generated.
jmri.util.JUnitAppender.assertErrorMessage("Invalid string '" + cvString + "'");
cvString = "a(b(c)d)e";
expResult = new ArrayList<>(Arrays.asList());
result = CvUtil.expandCvList(cvString);
assertEquals(expResult, result);
// make sure an error message is generated.
jmri.util.JUnitAppender.assertErrorMessage("Invalid string '" + cvString + "'");
}
/**
* Test of addCvDescription method, of class CvUtil.
*/
@Test
public void testAddCvDescription() {
// System.out.println("addCvDescription");
String toolTip = "A test tooltip";
String cvDescription = "CV999";
String mask1 = "XVXVXVVV";
String mask2 = "VVVVVVVV";
String expResult;
String result;
// test with null toolTip
result = CvUtil.addCvDescription(null, cvDescription, mask1);
expResult = "CV999 bits 0-2,4,6";
assertEquals(expResult, result);
// test with empty toolTip
result = CvUtil.addCvDescription("", cvDescription, mask1);
expResult = "CV999 bits 0-2,4,6";
assertEquals(expResult, result);
// test with no mask
result = CvUtil.addCvDescription(toolTip, cvDescription, mask2);
expResult = "A test tooltip (CV999)";
assertEquals(expResult, result);
// test with no HTML
result = CvUtil.addCvDescription(toolTip, cvDescription, mask1);
expResult = "A test tooltip (CV999 bits 0-2,4,6)";
assertEquals(expResult, result);
// test with HTML
result = CvUtil.addCvDescription("<html>" + toolTip + "</html>", cvDescription, mask1);
expResult = "<html>A test tooltip (CV999 bits 0-2,4,6)</html>";
assertEquals(expResult, result);
}
/**
* Test of getMaskDescription method, of class CvUtil.
*/
@Test
public void testGetMaskDescription() {
// System.out.println("getMaskDescription");
assertEquals("bit 0", CvUtil.getMaskDescription("XXXXXXXV"));
assertEquals("bit 2", CvUtil.getMaskDescription("XXXXXVXX"));
assertEquals("bits 0-2,4,6", CvUtil.getMaskDescription("XVXVXVVV"));
assertEquals("bits 1-2,4-5", CvUtil.getMaskDescription("XXVVXVVX"));
assertEquals("no bits", CvUtil.getMaskDescription("XXXXXXXX"));
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
}