package dict_topic import ( "testing" "github.com/google/uuid" "p78git.ddns.net/svi/gobus/api/netapi" ) /* Тест для потокобезопасного словаря топиков. */ type tester struct { t *testing.T dictTopic *DictTopic } func TestAny(t *testing.T) { sf := &tester{ t: t, } sf.create() sf.pub() sf.sub() } // Подписка клиента на топики func (sf *tester) sub() { sf.t.Log("sub") sf.subBad1() } // Нет клиента на подписку func (sf *tester) subBad1() { sf.t.Log("subBad1") err := sf.dictTopic.Subscribe(nil) if err == nil { sf.t.Fatalf("subBad1(): err==nil") } } // Публикация в топик func (sf *tester) pub() { sf.t.Log("pub") sf.pubBad1() sf.pubBud2() sf.pubGood1() } func (sf *tester) pubGood1() { sf.t.Log("pubGood1") msg := &netapi.TopicMsg{ Source: 0, Topic: "test_topic", BinMsg: []byte{}, StrUuid: uuid.New().String(), } err := sf.dictTopic.Public(msg) if err != nil { sf.t.Fatalf("pubGood1(): err=%v", err) } if topic := sf.dictTopic.Get("test_topic"); topic == nil { sf.t.Fatalf("createGood1(): topic==nil") } if len_ := sf.dictTopic.Len(); len_ != 1 { sf.t.Fatalf("createGood1(): len_(%v)!=1", len_) } if size := sf.dictTopic.Size(); size != 34 { sf.t.Fatalf("createGood1(): size(%v)!=34", size) } } // Нет топика func (sf *tester) pubBud2() { sf.t.Log("pubBud2") msg := &netapi.TopicMsg{ Source: 0, Topic: "", BinMsg: []byte{}, StrUuid: "", } err := sf.dictTopic.Public(msg) if err == nil { sf.t.Fatalf("pubBud2(): err==nil") } } // Нет сообщения для публикации func (sf *tester) pubBad1() { sf.t.Log("pubBad1]") err := sf.dictTopic.Public(nil) if err == nil { sf.t.Fatalf("pubBad1(): err==nil") } } func (sf *tester) create() { sf.t.Log("create") sf.dictTopic = NewDictTopic() if sf.dictTopic == nil { sf.t.Fatalf("create(): dictTopic==nil") } }