Просмотр исходного кода

v0 добавление тестов. интерфейов; 100%

SVI 3 лет назад
Родитель
Сommit
e9cb2bbbf3
3 измененных файлов с 90 добавлено и 0 удалено
  1. 13 0
      libtui/v0/pos/pos.go
  2. 63 0
      libtui/v0/pos/pos_test.go
  3. 14 0
      libtui/v0/types/ipos.go

+ 13 - 0
libtui/v0/pos/pos.go

@@ -5,6 +5,7 @@ import (
 	"p78git.ddns.net/svi/libtui/alias"
 	"p78git.ddns.net/svi/libtui/posx"
 	"p78git.ddns.net/svi/libtui/posy"
+	"p78git.ddns.net/svi/libtui/types"
 )
 
 // Pos -- позиция виджета
@@ -22,11 +23,23 @@ func NewPos() *Pos {
 	return sf
 }
 
+// Get -- возвращает позицию в виде пары координат
 func (sf *Pos) Get() (alias.PosX, alias.PosY) {
 	return sf.x.Get(), sf.y.Get()
 }
 
+// Set -- устанавливает позицию объекта в виде пары координат
 func (sf *Pos) Set(x alias.PosX, y alias.PosY) {
 	sf.x.Set(x)
 	sf.y.Set(y)
 }
+
+// X -- возвращает позицию X
+func (sf *Pos) X() types.IPosX {
+	return sf.x
+}
+
+// Y -- возвращает позицию Y
+func (sf *Pos) Y() types.IPosY {
+	return sf.y
+}

+ 63 - 0
libtui/v0/pos/pos_test.go

@@ -0,0 +1,63 @@
+package pos
+
+import (
+	"testing"
+
+	"p78git.ddns.net/svi/libtui/types"
+)
+
+/*
+	Тест для позиции на экране
+*/
+
+// Тестер для позиции
+type tester struct {
+	t    *testing.T
+	pos  *Pos
+	ipos types.IPos
+}
+
+func TestPos(t *testing.T) {
+	test := &tester{
+		t: t,
+	}
+	test.create()
+	test.set()
+}
+
+// Установка значения
+func (sf *tester) set() {
+	sf.t.Logf("create()")
+	x, y := sf.ipos.Get()
+	if x != 0 {
+		sf.t.Fatalf("set(): x(%v)!=0", x)
+	}
+	if y != 0 {
+		sf.t.Fatalf("set(): y(%v)!=0", y)
+	}
+	sf.ipos.Set(-5, 3)
+	x, y = sf.ipos.Get()
+	if x != -5 {
+		sf.t.Fatalf("set(): x(%v)!=-5", x)
+	}
+	if y != 3 {
+		sf.t.Fatalf("set(): y(%v)!=3", y)
+	}
+}
+
+// Создание позиции
+func (sf *tester) create() {
+	sf.t.Logf("create")
+	sf.pos = NewPos()
+	if sf.pos == nil {
+		sf.t.Fatalf("create(): ")
+	}
+	sf.ipos = sf.pos
+
+	if x := sf.ipos.X(); x == nil {
+		sf.t.Fatalf("create(): x==nil")
+	}
+	if y := sf.ipos.Y(); y == nil {
+		sf.t.Fatalf("create(): y==nil")
+	}
+}

+ 14 - 0
libtui/v0/types/ipos.go

@@ -0,0 +1,14 @@
+package types
+
+import "p78git.ddns.net/svi/libtui/alias"
+
+type IPos interface {
+	// Get -- возвращает позицию объекта
+	Get() (alias.PosX, alias.PosY)
+	// Set -- устанавливает позицию виджета
+	Set(alias.PosX, alias.PosY)
+	// X -- возвращает объект координаты X
+	X() IPosX
+	// Y -- возвращает объект координаты Y
+	Y() IPosY
+}