| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- package option
- import (
- "testing"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
- )
- type testerOption struct {
- t *testing.T
- }
- func TestOption(t *testing.T) {
- sf := &testerOption{
- t: t,
- }
- sf.create()
- }
- // Создаёт новый Result.
- func (sf *testerOption) create() {
- sf.t.Log("create")
- sf.createSomeBad1()
- sf.createSomeGood1()
- sf.createSomeGood2()
- sf.createNoneGood1()
- }
- func (sf *testerOption) createNoneGood1() {
- sf.t.Log("createNoneGood1")
- defer func() {
- if _panic := recover(); _panic != nil {
- sf.t.Fatalf("createNoneGood1(): panic=%v", _panic)
- }
- }()
- opt := NewNone[defs.ITxtFix]()
- if opt.IsSome() {
- sf.t.Fatalf("createNoneGood1(): is ok")
- }
- if !opt.IsNone() {
- sf.t.Fatalf("createNoneGood1(): not err")
- }
- if val := opt.SomeOr(defs.TxtFix("test2")); val.Get() != "test2" {
- sf.t.Fatalf("createNoneGood1(): val bad")
- }
- if val := opt.SomeOr(defs.TxtFix("test1")); val.Get() != "test1" {
- sf.t.Fatalf("createNoneGood1(): val bad")
- }
- if val := opt.SomeOrFn(sf.fnWrap2); val.Get() != "test5" {
- sf.t.Fatalf("createNoneGood1(): val bad")
- }
- _opt := opt.(*Option[defs.ITxtFix])
- sf.unwrapErr(_opt)
- sf.hassert(_opt)
- sf.assert(_opt)
- }
- func (sf *testerOption) assert(res *Option[defs.ITxtFix]) {
- sf.t.Log("assert")
- defer func() {
- if _panic := recover(); _panic == nil {
- sf.t.Fatalf("assert(): panic==nil")
- }
- }()
- res.Hassert(testAssert)
- }
- var testAssert = defs.Txt("test assert")
- func (sf *testerOption) hassert(res *Option[defs.ITxtFix]) {
- sf.t.Log("hassert")
- defer func() {
- if _panic := recover(); _panic == nil {
- sf.t.Fatalf("hassert(): panic==nil")
- }
- }()
- res.Hassert(testAssert)
- }
- func (sf *testerOption) unwrapErr(res *Option[defs.ITxtFix]) {
- sf.t.Log("unwrapErr")
- defer func() {
- if _panic := recover(); _panic == nil {
- sf.t.Fatalf("unwrapErr(): panic==nil")
- }
- }()
- _ = res.Some()
- }
- var (
- str = defs.TxtFix("test val")
- )
- func (sf *testerOption) createSomeGood2() {
- sf.t.Log("createSomeGood2")
- defer func() {
- if _panic := recover(); _panic != nil {
- sf.t.Fatalf("createSomeGood2(): panic=%v", _panic)
- }
- }()
- opt := NewSome(str)
- if !opt.IsSome() {
- sf.t.Fatalf("createSomeGood2(): not ok")
- }
- if opt.IsNone() {
- sf.t.Fatalf("createSomeGood2(): is err")
- }
- if val := opt.Some(); val != str {
- sf.t.Fatalf("createSomeGood2(): val bad")
- }
- txtTest1 := defs.Txt("test1")
- if val := opt.SomeOr(txtTest1); val != str {
- sf.t.Fatalf("createSomeGood2(): val bad")
- }
- if val := opt.SomeOr(txtTest1); val.Get() != "str" {
- sf.t.Fatalf("createSomeGood2(): val bad")
- }
- if val := opt.SomeOrFn(sf.fnWrap); val != str {
- sf.t.Fatalf("createSomeGood2(): val bad")
- }
- opt.Hassert(txtTest)
- opt.Assert(txtTest)
- }
- var txtTest = defs.Txt("test")
- // Функция высшего порядка для замещения ошибки.
- func (sf *testerOption) fnWrap2() defs.ITxtFix {
- return defs.Txt("test5")
- }
- // Функция высшего порядка для замещения ошибки.
- func (sf *testerOption) fnWrap() defs.ITxtFix {
- return defs.Txt("test1")
- }
- func (sf *testerOption) createSomeGood1() {
- sf.t.Log("createSomeGood1")
- defer func() {
- if _panic := recover(); _panic != nil {
- sf.t.Fatalf("createSomeGood1(): panic=%v", _panic)
- }
- }()
- str := "test val"
- _ = NewSome(&str)
- }
- // Нет результата.
- func (sf *testerOption) createSomeBad1() {
- sf.t.Log("createSomeBad1")
- defer func() {
- if _panic := recover(); _panic == nil {
- sf.t.Fatalf("createSomeBad1(): panic==nil")
- }
- }()
- var str defs.ITxtFix
- _ = NewSome(str)
- }
|