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 expResult; List 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("" + toolTip + "", cvDescription, mask1); expResult = "A test tooltip (CV999 bits 0-2,4,6)"; 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(); } }