|
|
@@ -4,6 +4,7 @@ import (
|
|
|
"testing"
|
|
|
"time"
|
|
|
"wartank/pkg/components/safebool"
|
|
|
+ "wartank/pkg/mock/mock_zone"
|
|
|
"wartank/pkg/mock/mockapp"
|
|
|
"wartank/pkg/types"
|
|
|
)
|
|
|
@@ -17,15 +18,18 @@ type tester struct {
|
|
|
t *testing.T
|
|
|
app *mockapp.MockApp
|
|
|
zone types.ИСцена
|
|
|
- ct *DownTime
|
|
|
+ ct *ВремОбрат
|
|
|
err error
|
|
|
isCall *safebool.SafeBool // Признак обратного вызова
|
|
|
}
|
|
|
|
|
|
// Обратный вызов для счётчика времени
|
|
|
func (sf *tester) call() {
|
|
|
- if sf.ct.chCall != nil {
|
|
|
- <-sf.ct.chCall
|
|
|
+ if sf.ct == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if sf.ct.канВызов != nil {
|
|
|
+ <-sf.ct.канВызов
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -46,9 +50,9 @@ func TestCountTime(t *testing.T) {
|
|
|
// Оменяет работу таймера
|
|
|
func (sf *tester) cancel() {
|
|
|
sf.t.Logf("=cancel=\n")
|
|
|
- ct := NewCountTime(sf.zone, 0)
|
|
|
- for len(ct.chTick) > 0 {
|
|
|
- <-ct.chTick
|
|
|
+ ct := НовВремОбрат(sf.zone, 0)
|
|
|
+ for len(ct.канТик) > 0 {
|
|
|
+ <-ct.канТик
|
|
|
}
|
|
|
sf.app.CancelApp()
|
|
|
time.Sleep(time.Millisecond * 150)
|
|
|
@@ -56,41 +60,43 @@ func (sf *tester) cancel() {
|
|
|
|
|
|
// Проверяет обработчик тика
|
|
|
func (sf *tester) checkTick() {
|
|
|
- ct := NewCountTime(sf.zone, 0)
|
|
|
+ времОбрат := НовВремОбрат(sf.zone, 0)
|
|
|
{ // Секундный тик
|
|
|
- ct.parse("00:00:08")
|
|
|
+ времОбрат.parse("00:00:08")
|
|
|
time.Sleep(time.Second * 1)
|
|
|
- ct.chTick <- 1
|
|
|
+ времОбрат.канТик <- 1
|
|
|
time.Sleep(time.Millisecond * 20)
|
|
|
- if val := ct.Стр(); val != "00:00:08" {
|
|
|
+ if val := времОбрат.Стр(); val != "00:00:08" {
|
|
|
sf.t.Errorf("checkTick(): счётчик(%v)!='00:00:08'", val)
|
|
|
}
|
|
|
}
|
|
|
{ // Проверка времени прямо сейчас
|
|
|
- ct.chTick <- 1
|
|
|
+ времОбрат.канТик <- 1
|
|
|
time.Sleep(time.Millisecond * 20)
|
|
|
- if val := ct.Стр(); val != "00:00:08" {
|
|
|
+ if val := времОбрат.Стр(); val != "00:00:08" {
|
|
|
sf.t.Errorf("checkTick(): счётчик(%v)!='00:00:08'", val)
|
|
|
}
|
|
|
}
|
|
|
{ // Проверка обратного вызова прямо сейчас
|
|
|
strTime := time.Now().UTC().Format("15:04:05")
|
|
|
- ct.parse(strTime)
|
|
|
- if val := ct.Стр(); val != strTime {
|
|
|
+ времОбрат.parse(strTime)
|
|
|
+ if val := времОбрат.Стр(); val != strTime {
|
|
|
sf.t.Errorf("checkTick(): счётчик(%v)!=%s", val, strTime)
|
|
|
}
|
|
|
- ct.chTick <- 1
|
|
|
+ времОбрат.канТик <- 1
|
|
|
// Выход из функции -- и есть факт обратного вызова
|
|
|
sf.call()
|
|
|
{ // Проверка отсутствия обратного вызова прямо сейчас
|
|
|
- ct.parse("00:00:00")
|
|
|
- ct.chTick <- 1
|
|
|
+ времОбрат.parse("00:00:00")
|
|
|
+ времОбрат.блок.Lock()
|
|
|
+ времОбрат.канТик <- 1
|
|
|
+ времОбрат.блок.Unlock()
|
|
|
// Выход из функции -- и есть факт обратного вызова
|
|
|
sf.call()
|
|
|
- if val := ct.Получ(); val != 0 {
|
|
|
+ if val := времОбрат.Получ(); val != 0 {
|
|
|
sf.t.Errorf("checkTick(): счётчик(%v)!=0", val)
|
|
|
}
|
|
|
- ct.Стоп()
|
|
|
+ времОбрат.Стоп()
|
|
|
sf.app.CancelApp()
|
|
|
time.Sleep(time.Millisecond * 50)
|
|
|
}
|
|
|
@@ -111,7 +117,7 @@ func (sf *tester) setStrBad1(strBad string) {
|
|
|
// Устанавливает строковое значение времени
|
|
|
func (sf *tester) setStr() {
|
|
|
go sf.call()
|
|
|
- ct := NewCountTime(sf.zone, 0)
|
|
|
+ ct := НовВремОбрат(sf.zone, 0)
|
|
|
{ // BAD-1 пустая строка
|
|
|
if sf.err = ct.parse(""); sf.err == nil {
|
|
|
sf.t.Errorf("setStr(): BAD-1 err==nil")
|
|
|
@@ -165,8 +171,8 @@ func (sf *tester) setStr() {
|
|
|
// Устанавливает число секунд для отсчёта
|
|
|
func (sf *tester) setInt() {
|
|
|
go sf.call()
|
|
|
- // sf.zone=
|
|
|
- ct := NewCountTime(sf.zone, 0)
|
|
|
+ sf.zone = mock_zone.НовМокСцена()
|
|
|
+ ct := НовВремОбрат(sf.zone, 0)
|
|
|
{ // Bad-1 Отрицательное число
|
|
|
if sf.err = ct.set_val(-1); sf.err == nil {
|
|
|
sf.t.Errorf("setInt(): BAD-1 err==nil")
|
|
|
@@ -176,14 +182,14 @@ func (sf *tester) setInt() {
|
|
|
if sf.err = ct.set_val(8); sf.err != nil {
|
|
|
sf.t.Errorf("setInt(): GOOD-1 err=%v", sf.err)
|
|
|
}
|
|
|
- if ct.parser.Hour().Get() != 0 {
|
|
|
- sf.t.Errorf("setInt(): GOOD-1 hour(%v)!=0", sf.ct.parser.Hour().Get())
|
|
|
+ if ct.парсер.Hour().Get() != 0 {
|
|
|
+ sf.t.Errorf("setInt(): GOOD-1 hour(%v)!=0", sf.ct.парсер.Hour().Get())
|
|
|
}
|
|
|
- if ct.parser.Min().Get() != 0 {
|
|
|
- sf.t.Errorf("setInt(): GOOD-1 min(%v)!=0", sf.ct.parser.Min().Get())
|
|
|
+ if ct.парсер.Min().Get() != 0 {
|
|
|
+ sf.t.Errorf("setInt(): GOOD-1 min(%v)!=0", sf.ct.парсер.Min().Get())
|
|
|
}
|
|
|
- if ct.parser.Sec().Get() != 8 {
|
|
|
- sf.t.Errorf("setInt(): GOOD-1 sec(%v)!=8", sf.ct.parser.Sec().Get())
|
|
|
+ if ct.парсер.Sec().Get() != 8 {
|
|
|
+ sf.t.Errorf("setInt(): GOOD-1 sec(%v)!=8", sf.ct.парсер.Sec().Get())
|
|
|
}
|
|
|
if strVal := ct.Стр(); strVal != "00:00:08" {
|
|
|
sf.t.Errorf("setInt(): GOOD-1 strVal(%v)!='00:00:08'", strVal)
|
|
|
@@ -193,14 +199,14 @@ func (sf *tester) setInt() {
|
|
|
if sf.err = ct.set_val(121); sf.err != nil {
|
|
|
sf.t.Errorf("setInt(): GOOD-2 err=%v", sf.err)
|
|
|
}
|
|
|
- if ct.parser.Hour().Get() != 0 {
|
|
|
- sf.t.Errorf("setInt(): GOOD-2 hour(%v)!=0", sf.ct.parser.Hour().Get())
|
|
|
+ if ct.парсер.Hour().Get() != 0 {
|
|
|
+ sf.t.Errorf("setInt(): GOOD-2 hour(%v)!=0", sf.ct.парсер.Hour().Get())
|
|
|
}
|
|
|
- if ct.parser.Min().Get() != 2 {
|
|
|
- sf.t.Errorf("setInt(): GOOD-2 min(%v)!=2", sf.ct.parser.Min().Get())
|
|
|
+ if ct.парсер.Min().Get() != 2 {
|
|
|
+ sf.t.Errorf("setInt(): GOOD-2 min(%v)!=2", sf.ct.парсер.Min().Get())
|
|
|
}
|
|
|
- if ct.parser.Sec().Get() != 1 {
|
|
|
- sf.t.Errorf("setInt(): GOOD-2 sec(%v)!=1", sf.ct.parser.Sec().Get())
|
|
|
+ if ct.парсер.Sec().Get() != 1 {
|
|
|
+ sf.t.Errorf("setInt(): GOOD-2 sec(%v)!=1", sf.ct.парсер.Sec().Get())
|
|
|
}
|
|
|
if strVal := ct.Стр(); strVal != "00:02:01" {
|
|
|
sf.t.Errorf("setInt(): GOOD-2 strVal(%v)!='00:02:01'", strVal)
|
|
|
@@ -210,14 +216,14 @@ func (sf *tester) setInt() {
|
|
|
if sf.err = ct.set_val(7203); sf.err != nil {
|
|
|
sf.t.Errorf("setInt(): GOOD-3 err=%v", sf.err)
|
|
|
}
|
|
|
- if ct.parser.Hour().Get() != 2 {
|
|
|
- sf.t.Errorf("setInt(): GOOD-3 hour(%v)!=2", sf.ct.parser.Hour().Get())
|
|
|
+ if ct.парсер.Hour().Get() != 2 {
|
|
|
+ sf.t.Errorf("setInt(): GOOD-3 hour(%v)!=2", sf.ct.парсер.Hour().Get())
|
|
|
}
|
|
|
- if ct.parser.Min().Get() != 0 {
|
|
|
- sf.t.Errorf("setInt(): GOOD-3 min(%v)!=0", sf.ct.parser.Min().Get())
|
|
|
+ if ct.парсер.Min().Get() != 0 {
|
|
|
+ sf.t.Errorf("setInt(): GOOD-3 min(%v)!=0", sf.ct.парсер.Min().Get())
|
|
|
}
|
|
|
- if ct.parser.Sec().Get() != 3 {
|
|
|
- sf.t.Errorf("setInt(): GOOD-3 sec(%v)!=3", sf.ct.parser.Sec().Get())
|
|
|
+ if ct.парсер.Sec().Get() != 3 {
|
|
|
+ sf.t.Errorf("setInt(): GOOD-3 sec(%v)!=3", sf.ct.парсер.Sec().Get())
|
|
|
}
|
|
|
if strVal := ct.Стр(); strVal != "02:00:03" {
|
|
|
sf.t.Errorf("setInt(): GOOD-3 strVal(%v)!='02:00:03'", strVal)
|
|
|
@@ -232,7 +238,7 @@ func (sf *tester) createBad1() {
|
|
|
sf.t.Errorf("createBad1(): panic==nil")
|
|
|
}
|
|
|
}()
|
|
|
- sf.ct = NewCountTime(nil, 0)
|
|
|
+ sf.ct = НовВремОбрат(nil, 0)
|
|
|
if sf.ct != nil {
|
|
|
sf.t.Errorf("createBad1(): countTime!=nil")
|
|
|
}
|
|
|
@@ -242,10 +248,11 @@ func (sf *tester) createBad1() {
|
|
|
func (sf *tester) createGood1() {
|
|
|
defer func() {
|
|
|
if _panic := recover(); _panic != nil {
|
|
|
- sf.t.Errorf("createGood1(): panic=%v", _panic)
|
|
|
+ sf.t.Errorf("createGood1(): panic=\n\t%v", _panic)
|
|
|
}
|
|
|
}()
|
|
|
- ct := NewCountTime(sf.zone, 1)
|
|
|
+ sf.zone = mock_zone.НовМокСцена()
|
|
|
+ ct := НовВремОбрат(sf.zone, 1)
|
|
|
if ct == nil {
|
|
|
sf.t.Errorf("createGood1(): countTime==nil")
|
|
|
}
|