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

SVI Рабочее сохранение

SVI 1 день назад
Родитель
Сommit
e4a34722b5

+ 2 - 0
v4/d0/defs/def_bool/def_let_bool.go → v4/d0/defs/def_bool/def_bool_let.go

@@ -6,6 +6,7 @@ import (
 
 	"gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_base"
 	"gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner"
+	"gitp78su.ipnodns.ru/svi/kern/v4/d0/helpers"
 )
 
 // LBool -- неизменяемое внутреннее булево.
@@ -16,6 +17,7 @@ type LBool struct {
 
 // LetBool -- возвращает новый внутренний неизменяемый Bool
 func LetBool[T def_spec_base.BoolConstraint](owner *owner.LOwner, val T) *LBool {
+	helpers.If(owner == nil).Hassert("LetBool(): owner==nil")
 	sf := &LBool{
 		OwnerPass: owner.Pass(),
 		val:       def_spec_base.Bool(val),

+ 92 - 0
v4/d0/defs/def_bool/def_bool_let_test.go

@@ -0,0 +1,92 @@
+package def_bool
+
+import (
+	"testing"
+
+	"gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner"
+)
+
+type tester0 struct {
+	t     *testing.T
+	lBool *LBool
+	owner *owner.LOwner
+}
+
+func TestLetBool(t *testing.T) {
+	sf := &tester0{
+		t:     t,
+		owner: owner.LetOwner(1, "test_let_bool"),
+	}
+	sf.let()
+	sf.bool()
+	sf.let2()
+}
+
+// Получение значения
+func (sf *tester0) let2() {
+	sf.t.Log("let2")
+	sf.let2Good1()
+	sf.let2Bad1()
+}
+
+// Поменялся владелец
+func (sf *tester0) let2Bad1() {
+	sf.t.Log("let2Bad1")
+	owner := owner.LetOwner(2, "test_owner2")
+	_ = sf.lBool.Move(owner)
+	defer func() {
+		if _panic := recover(); _panic == nil {
+			sf.t.Fatalf("let2Bad1(): %v", _panic)
+		}
+	}()
+	_ = sf.lBool.IsOk()
+}
+
+func (sf *tester0) let2Good1() {
+	sf.t.Log("let2Good1")
+	lBool := sf.lBool.Let()
+	if lBool.IsOk() {
+		sf.t.Fatalf("let2Good1(): val == true")
+	}
+	_ = lBool.String()
+}
+
+// Проверка значений
+func (sf *tester0) bool() {
+	sf.t.Log("bool")
+	if sf.lBool.IsNot() {
+		sf.t.Fatalf("bool(): val == false")
+	}
+	sf.lBool.val = false
+	if sf.lBool.IsOk() {
+		sf.t.Fatalf("bool(): val == true")
+	}
+}
+
+// Создание булева внутреннего значения
+func (sf *tester0) let() {
+	sf.t.Log("let")
+	sf.letBad1()
+	sf.letGoo1()
+}
+
+func (sf *tester0) letGoo1() {
+	// Создание внутреннего булева значения
+	sf.t.Log("letGoo1")
+	sf.lBool = LetBool(sf.owner, true)
+	if sf.lBool.IsNot() {
+		sf.t.Fatalf("letGoo1(): val.IsOk() == false")
+	}
+}
+
+// Нет владельца
+func (sf *tester0) letBad1() {
+	// Создание внутреннего булева значения
+	sf.t.Log("letBad2")
+	defer func() {
+		if _panic := recover(); _panic == nil {
+			sf.t.Fatalf("letBad1(): panic==nil")
+		}
+	}()
+	_ = LetBool(nil, false)
+}

+ 1 - 1
v4/d0/defs/def_bool/def_mut_bool.go → v4/d0/defs/def_bool/def_bool_mut.go

@@ -15,7 +15,7 @@ type MBool struct {
 	*LBool
 }
 
-// MutBool -- возвращает новый внутрений изменяемый Bool.
+// MutBool -- возвращает новый внутренний изменяемый Bool.
 func MutBool[T def_spec_base.BoolConstraint](owner *owner.LOwner, val T) *MBool {
 	sf := &MBool{
 		LBool: LetBool(owner, val),

+ 118 - 0
v4/d0/defs/def_bool/def_bool_mut_test.go

@@ -0,0 +1,118 @@
+package def_bool
+
+import (
+	"os"
+	"testing"
+
+	"gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner"
+)
+
+type tester1 struct {
+	t     *testing.T
+	owner *owner.LOwner
+	mBool *MBool
+}
+
+func TestMutBool(t *testing.T) {
+	sf := &tester1{
+		t:     t,
+		owner: owner.LetOwner(1, "test_mut_bool"),
+	}
+	sf.mut()
+	sf.fromEnv()
+	sf.set()
+	sf.move()
+}
+
+// Перемещение значения
+func (sf *tester1) move() {
+	sf.t.Log("move")
+	owner := owner.LetOwner(2, "test_mut_bool_move")
+	sf.mBool.Move(owner)
+	defer func() {
+		if _panic := recover(); _panic == nil {
+			sf.t.Fatalf("move(): panic == nil")
+		}
+	}()
+	_ = sf.mBool.Let()
+}
+
+// Установка и сброс значения
+func (sf *tester1) set() {
+	sf.t.Log("set")
+	sf.mBool.Set()
+	if sf.mBool.IsNot() {
+		sf.t.Fatalf("set(): val==false")
+	}
+	if sf.mBool.IsNot() {
+		sf.t.Fatalf("set(): val==false")
+	}
+	sf.mBool.Reset()
+	if sf.mBool.IsOk() {
+		sf.t.Fatalf("set(): val==true")
+	}
+	if sf.mBool.IsOk() {
+		sf.t.Fatalf("set(): val==true")
+	}
+}
+
+// Присвоение из переменных окружения
+func (sf *tester1) fromEnv() {
+	sf.t.Log("fromEnv")
+	sf.fromEnvBad1()
+	sf.fromEnvBad2()
+	sf.fromEnvGood1()
+	sf.fromEnvGood2()
+}
+
+func (sf *tester1) fromEnvGood2() {
+	sf.t.Log("fromEnvGood2")
+	os.Unsetenv("TEST_MUT_BOOL")
+	os.Setenv("TEST_MUT_BOOL", "FalSe")
+	res := sf.mBool.FromEnv("TEST_MUT_BOOL")
+	if res.IsErr() {
+		sf.t.Fatalf("fromEnvGood2(): err=%v", res.Err())
+	}
+	if res.Ok().IsOk() {
+		sf.t.Fatalf("fromEnvGood2(): not=%v", res.Ok())
+	}
+}
+
+func (sf *tester1) fromEnvGood1() {
+	sf.t.Log("fromEnvGood1")
+	os.Unsetenv("TEST_MUT_BOOL")
+	os.Setenv("TEST_MUT_BOOL", "tRuE")
+	res := sf.mBool.FromEnv("TEST_MUT_BOOL")
+	if res.IsErr() {
+		sf.t.Fatalf("fromEnvGood1(): err=%v", res.Err())
+	}
+}
+
+func (sf *tester1) fromEnvBad2() {
+	sf.t.Log("fromEnvBad2")
+	// os.Unsetenv("TEST_MUT_BOOL")
+	os.Setenv("TEST_MUT_BOOL", "5")
+	res := sf.mBool.FromEnv("TEST_MUT_BOOL")
+	if res.IsOk() {
+		sf.t.Fatalf("fromEnvBad2(): err == nil")
+	}
+}
+
+func (sf *tester1) fromEnvBad1() {
+	sf.t.Log("fromEnvBad1")
+	os.Unsetenv("TEST_MUT_BOOL")
+	// os.Setenv("TEST_MUT_BOOL", "faLSe")
+	res := sf.mBool.FromEnv("TEST_MUT_BOOL")
+	if res.IsOk() {
+		sf.t.Fatalf("fromEnvBad1(): err == nil")
+	}
+}
+
+// Создание изменяемого бул
+func (sf *tester1) mut() {
+	sf.t.Log("log")
+	sf.mBool = MutBool(sf.owner, true)
+	if sf.mBool.IsNot() {
+		sf.t.Fatalf("mut(): val=false")
+	}
+}

+ 1 - 1
v4/d0/defs/table/owner/owner_test.go

@@ -25,7 +25,7 @@ func (sf *tester1) name() {
 	if name != "test_owner" {
 		sf.t.Fatalf("name(): name(%v) not equal", name)
 	}
-	pass:=sf.owner.Pass()
+	pass := sf.owner.Pass()
 	if pass.ownerCur != sf.owner {
 		sf.t.Fatalf("name(): ownerCur(%v) not equal", pass.ownerCur)
 	}