|
@@ -1,6 +1,7 @@
|
|
package door
|
|
package door
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "strings"
|
|
"testing"
|
|
"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
|
|
// verify that the BARS_CP437 matches BARS_UNICODE
|
|
|
|
|
|
cp437 := BARS_CP437.solid
|
|
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
|
|
// This is normally done by door init, but we're skipping that right now
|
|
Unicode = true
|
|
Unicode = true
|
|
@@ -63,15 +64,109 @@ func TestBars(t *testing.T) {
|
|
|
|
|
|
BarSolid := map[int]string{0: Bar25 + " ",
|
|
BarSolid := map[int]string{0: Bar25 + " ",
|
|
5: 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 {
|
|
for pct, text := range BarSolid {
|