fixes for ascii

This commit is contained in:
Branislav Stojkovic
2025-03-12 15:05:37 +01:00
parent 39ba93ff2c
commit 858cab4ab4
4 changed files with 376 additions and 214 deletions
@@ -2,9 +2,12 @@ package org.diylc.netlist;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import org.junit.Test;
@@ -67,4 +70,101 @@ public class TreeAsciiUtilTest {
assertEquals("─┤  ├─", result.get(1));
assertEquals(" └yy┘ ", result.get(2));
}
@Test
public void testHtmlLength() {
assertEquals(3, TreeAsciiUtil.htmlLength("abc"));
assertEquals(1, TreeAsciiUtil.htmlLength(" "));
assertEquals(1, TreeAsciiUtil.htmlLength("─"));
assertEquals(5, TreeAsciiUtil.htmlLength("a b─c"));
assertEquals(0, TreeAsciiUtil.htmlLength(""));
assertEquals(0, TreeAsciiUtil.htmlLength(null));
}
@Test
public void testGenerateString() {
assertEquals("", TreeAsciiUtil.generateString("a", 0));
assertEquals("", TreeAsciiUtil.generateString("a", -1));
assertEquals("aaa", TreeAsciiUtil.generateString("a", 3));
assertEquals("  ", TreeAsciiUtil.generateString(" ", 2));
}
@Test
public void testConcatenateMultiLineSerialSimple() {
List<String> element1 = Arrays.asList("A", "B", "C");
List<String> element2 = Arrays.asList("D", "E", "F");
List<List<String>> elements = Arrays.asList(element1, element2);
List<String> result = TreeAsciiUtil.concatenateMultiLineSerial(" --- ", elements);
assertEquals(3, result.size());
assertEquals("A --- D", result.get(0));
assertEquals("B --- E", result.get(1));
assertEquals("C --- F", result.get(2));
}
@Test
public void testConcatenateMultiLineSerialDifferentHeights() {
List<String> element1 = Arrays.asList("A", "B", "C");
List<String> element2 = Arrays.asList("D");
List<List<String>> elements = Arrays.asList(element1, element2);
List<String> result = TreeAsciiUtil.concatenateMultiLineSerial(" --- ", elements);
assertEquals(3, result.size());
assertEquals("A --- &nbsp;", result.get(0));
assertEquals("B --- D", result.get(1));
assertEquals("C --- &nbsp;", result.get(2));
}
@Test
public void testConcatenateMultiLineParallelSimple() {
List<String> element1 = Arrays.asList("A", "B", "C");
List<String> element2 = Arrays.asList("D", "E", "F");
List<List<String>> elements = Arrays.asList(element1, element2);
List<String> result = TreeAsciiUtil.concatenateMultiLineParallel(elements);
assertEquals(7, result.size()); // 3 lines for element1 + 1 separator + 3 lines for element2
}
@Test
public void testConcatenateMultiLineParallelEmptyInput() {
assertEquals(0, TreeAsciiUtil.concatenateMultiLineParallel(Collections.emptyList()).size());
assertEquals(0, TreeAsciiUtil.concatenateMultiLineParallel(null).size());
}
@Test
public void testConcatenateMultiLineParallelSingleElement() {
List<String> element = Arrays.asList("A", "B");
List<List<String>> elements = Arrays.asList(element);
List<String> result = TreeAsciiUtil.concatenateMultiLineParallel(elements);
assertEquals(2, result.size());
// We just get back the original element
assertEquals(element.size(), result.size());
}
@Test
public void testConcatenateMultiLineParallelComplexStructure() {
// Create a more complex structure to test alignment
List<String> element1 = Arrays.asList("Short");
List<String> element2 = Arrays.asList("Line1", "Line2 Long", "Line3");
List<String> element3 = Arrays.asList("X", "Y", "Z", "W");
List<List<String>> elements = Arrays.asList(element1, element2, element3);
List<String> result = TreeAsciiUtil.concatenateMultiLineParallel(elements);
assertEquals(10, result.size()); // 1 + 1 + 3 + 1 + 4 = 10 lines
// Verify some characteristics that should be true
// The center line should have horizontal connections
assertTrue(result.get(4).contains(TreeAsciiUtil.BOXH));
// First element should have a right connection on its center line
assertTrue(result.get(0).contains(TreeAsciiUtil.BOXDR));
// Last element should have a left connection on its center line
assertTrue(result.get(6).contains(TreeAsciiUtil.BOXUR));
}
}