github.com/alimy/mir/v4@v4.1.0/assert/assert_test.go (about) 1 // Copyright 2023 Michael Li <alimy@gility.net>. All rights reserved. 2 // Use of this source code is governed by Apache License 2.0 that 3 // can be found in the LICENSE file. 4 5 package assert 6 7 import ( 8 "testing" 9 10 "github.com/alimy/mir/v4" 11 ) 12 13 type ( 14 fakeCtx struct{} 15 fakeBindingCtx struct{} 16 fakeRenderCtx struct{} 17 fakeObjectType struct{} 18 fakeObjectType2 struct{} 19 ) 20 21 func (fakeObjectType) Bind(_c fakeCtx) mir.Error { 22 // nothing 23 return nil 24 } 25 26 func (fakeObjectType) Render(_c fakeCtx) { 27 // nothing 28 } 29 30 func (fakeObjectType2) Bind(_c fakeBindingCtx) mir.Error { 31 // nothing 32 return nil 33 } 34 35 func (fakeObjectType2) Render(_c fakeRenderCtx) { 36 // nothing 37 } 38 39 func TestAssertType(t *testing.T) { 40 var ta TypeAssertor = anyTypeAssertor[fakeCtx]{} 41 fakeObj := new(fakeObjectType) 42 if ok := ta.AssertBinding(fakeObj); !ok { 43 t.Error("want assert binding true but not") 44 } 45 if ok := ta.AssertRender(fakeObj); !ok { 46 t.Error("want assert render true but not") 47 } 48 } 49 50 func TestAssertType2(t *testing.T) { 51 var ta TypeAssertor = anyTypeAssertor2[fakeBindingCtx, fakeRenderCtx]{} 52 fakeObj := new(fakeObjectType2) 53 if ok := ta.AssertBinding(fakeObj); !ok { 54 t.Error("want assert binding true but not") 55 } 56 if ok := ta.AssertRender(fakeObj); !ok { 57 t.Error("want assert render true but not") 58 } 59 } 60 61 func TestAssertBinding(t *testing.T) { 62 fakeObj := new(fakeObjectType) 63 if ok := AssertBinding(fakeObj); ok { 64 t.Error("want assert binding false but not") 65 } 66 if ok := AssertRender(fakeObj); ok { 67 t.Error("want assert render false but not") 68 } 69 } 70 71 func TestRegisterType(t *testing.T) { 72 fakeObj := new(fakeObjectType) 73 RegisterType[fakeCtx]() 74 if ok := AssertBinding(fakeObj); !ok { 75 t.Error("want assert binding true but not") 76 } 77 if ok := AssertRender(fakeObj); !ok { 78 t.Error("want assert render true but not") 79 } 80 } 81 82 func TestRegisterType2(t *testing.T) { 83 fakeObj := new(fakeObjectType2) 84 RegisterType2[fakeBindingCtx, fakeRenderCtx]() 85 if ok := AssertBinding(fakeObj); !ok { 86 t.Error("want assert binding true but not") 87 } 88 if ok := AssertRender(fakeObj); !ok { 89 t.Error("want assert render true but not") 90 } 91 }