Jelajahi Sumber

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 1 tahun lalu
induk
melakukan
344262abf6
1 mengubah file dengan 106 tambahan dan 11 penghapusan
  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 {