Procházet zdrojové kódy

Cleaning up bar test.

Use the BARS codes to build what the result should be.
This should allow Unicode and CP437 tests to be the same.
bugz před 1 rokem
rodič
revize
344262abf6
1 změnil soubory, kde provedl 106 přidání a 11 odebrání
  1. 106 11
      door/bar_test.go

+ 106 - 11
door/bar_test.go

@@ -1,6 +1,7 @@
 package door
 
 import (
+	"strings"
 	"testing"
 )
 
@@ -10,7 +11,7 @@ func pctUpdate(pct *int64) func() int64 {
 	}
 }
 
-func TestBarsUnicode(t *testing.T) {
+func TestBarsMatch(t *testing.T) {
 	// verify that the BARS_CP437 matches BARS_UNICODE
 
 	cp437 := BARS_CP437.solid
@@ -39,7 +40,7 @@ func TestBarsUnicode(t *testing.T) {
 	}
 }
 
-func TestBars(t *testing.T) {
+func TestBarsUnicode(t *testing.T) {
 
 	// This is normally done by door init, but we're skipping that right now
 	Unicode = true
@@ -63,15 +64,109 @@ func TestBars(t *testing.T) {
 
 	BarSolid := map[int]string{0: Bar25 + "          ",
 		5:   Bar25 + "          ",
-		10:  Bar25 + "\u2588         ",
-		20:  Bar25 + "\u2588\u2588        ",
-		25:  Bar25 + "\u2588\u2588        ",
-		30:  Bar50 + "\u2588\u2588\u2588       ",
-		50:  Bar50 + "\u2588\u2588\u2588\u2588\u2588     ",
-		75:  Bar75 + "\u2588\u2588\u2588\u2588\u2588\u2588\u2588   ",
-		90:  Bar95 + "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 ",
-		95:  Bar95 + "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 ",
-		100: Bar100 + "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+		10:  Bar25 + BARS.solid + "         ",
+		20:  Bar25 + strings.Repeat(BARS.solid, 2) + "        ",
+		25:  Bar25 + strings.Repeat(BARS.solid, 2) + "        ",
+		30:  Bar50 + strings.Repeat(BARS.solid, 3) + "       ",
+		50:  Bar50 + strings.Repeat(BARS.solid, 5) + "     ",
+		75:  Bar75 + strings.Repeat(BARS.solid, 7) + "   ",
+		90:  Bar95 + strings.Repeat(BARS.solid, 9) + " ",
+		95:  Bar95 + strings.Repeat(BARS.solid, 9) + " ",
+		100: Bar100 + strings.Repeat(BARS.solid, 10) + "",
+	}
+
+	for pct, text := range BarSolid {
+		bar.Percent = int64(pct * 100)
+		got := bar.Output()
+		if got != text {
+			t.Errorf("BarSolidRange: Expected %#v (%d%%), got %#v", text, pct, got)
+		}
+	}
+
+	BarColor = ColorText("BLA ON WHI")
+	bar = BarLine{Line: Line{DefaultColor: BarColor}, Width: 10, Style: HALF_STEP, PercentStyle: PERCENT_SPACE}
+	BarHalf := map[int]string{0: BarColor + "     0%   ",
+		5:   BarColor + BARS.half[1] + "    5%   ",
+		6:   BarColor + BARS.half[1] + "    6%   ",
+		10:  BarColor + BARS.half[0] + "   10%   ",
+		20:  BarColor + BARS.solid + BARS.half[0] + "  20%   ",
+		25:  BarColor + BARS.solid + BARS.half[0] + BARS.half[1] + " 25%   ",
+		26:  BarColor + BARS.solid + BARS.half[0] + BARS.half[1] + " 26%   ",
+		50:  BarColor + strings.Repeat(BARS.half[0], 3) + " 50%   ",
+		75:  BarColor + strings.Repeat(BARS.half[0], 3) + " 75%   ",
+		90:  BarColor + strings.Repeat(BARS.half[0], 3) + " 90% \u2588 ",
+		100: BarColor + "\u2588\u2588\u2588 100 \u2588\u2588",
+	}
+
+	for pct, text := range BarHalf {
+		bar.Percent = int64(pct * 100)
+		got := bar.Output()
+		if got != text {
+			t.Errorf("BarHalf: Expected %#v (%d%%), got %#v", text, pct, got)
+		}
+	}
+
+	BarColor = ColorText("RED")
+	bar = BarLine{Line: Line{DefaultColor: BarColor}, Width: 10, Style: GRADIENT}
+	BarGrad := map[int]string{0: BarColor + "          ",
+		3:   BarColor + "\u2591         ",
+		5:   BarColor + "\u2592         ",
+		8:   BarColor + "\u2593         ",
+		10:  BarColor + "\u2588         ",
+		20:  BarColor + "\u2588\u2588        ",
+		25:  BarColor + "\u2588\u2588\u2592       ",
+		50:  BarColor + "\u2588\u2588\u2588\u2588\u2588     ",
+		75:  BarColor + "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2592  ",
+		100: BarColor + "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+	}
+
+	var percent int64
+	bar.UpdateP = pctUpdate(&percent)
+
+	for pct, text := range BarGrad {
+		percent = int64(pct * 100)
+		got := bar.Output()
+		if got != text {
+			t.Errorf("BarGradient: Expected %#v (%d%%), got %#v", text, pct, got)
+		}
+	}
+
+}
+
+func TestBarsCP437(t *testing.T) {
+
+	// This is normally done by door init, but we're skipping that right now
+	Unicode = false
+	CP437 = true
+	BARS = BARS_CP437
+
+	BarColor := ColorText("BLUE")
+
+	Bar25 := ColorText("RED")
+	Bar50 := ColorText("BROWN")
+	Bar75 := ColorText("BOLD YEL")
+	Bar95 := ColorText("GREEN")
+	Bar100 := ColorText("BRI GREEN")
+
+	bar := BarLine{Line: Line{DefaultColor: BarColor}, Width: 10, Style: SOLID}
+	bar.ColorRange = []BarRange{
+		{2500, Bar25},
+		{5000, Bar50},
+		{7500, Bar75},
+		{9500, Bar95},
+		{10100, Bar100}}
+
+	BarSolid := map[int]string{0: Bar25 + "          ",
+		5:   Bar25 + "          ",
+		10:  Bar25 + BARS.solid + "         ",
+		20:  Bar25 + strings.Repeat(BARS.solid, 2) + "        ",
+		25:  Bar25 + strings.Repeat(BARS.solid, 2) + "        ",
+		30:  Bar50 + strings.Repeat(BARS.solid, 3) + "       ",
+		50:  Bar50 + strings.Repeat(BARS.solid, 5) + "     ",
+		75:  Bar75 + strings.Repeat(BARS.solid, 7) + "   ",
+		90:  Bar95 + strings.Repeat(BARS.solid, 9) + " ",
+		95:  Bar95 + strings.Repeat(BARS.solid, 9) + " ",
+		100: Bar100 + strings.Repeat(BARS.solid, 10) + "",
 	}
 
 	for pct, text := range BarSolid {