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  }