blob: c9e955cc7a1f3d58faf9ad59e4dceb57111c79e2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package notify
import "testing"
func TestSubject_Fetch(t *testing.T) {
s := NewSubject("s1")
if s.Name() != "s1" {
t.Fatalf("TestSubject_Fetch failed")
}
g := s.GetOrNewGroup("g1")
if g == nil {
t.Fatalf("TestSubject_Fetch failed")
}
if s.GetOrNewGroup(g.Name()) != g {
t.Fatalf("TestSubject_Fetch failed")
}
o := s.GetOrNewGroup("g2")
if s.Groups("g2") != o {
t.Fatalf("TestSubject_Fetch failed")
}
if s.Size() != 2 {
t.Fatalf("TestSubject_Fetch failed")
}
s.Remove(o.Name())
if s.Groups("g2") != nil {
t.Fatalf("TestSubject_Fetch failed")
}
if s.Size() != 1 {
t.Fatalf("TestSubject_Fetch failed")
}
INSTANCE := RegisterType("INSTANCE", 1)
mock1 := &mockSubscriber{Subscriber: NewSubscriber(INSTANCE, "s1", "g1")}
mock2 := &mockSubscriber{Subscriber: NewSubscriber(INSTANCE, "s1", "g2")}
g.AddSubscriber(mock1)
job := &baseEvent{group: "g3"}
s.Notify(job)
if mock1.job != nil || mock2.job != nil {
t.Fatalf("TestSubject_Fetch failed")
}
job.group = "g1"
s.Notify(job)
if mock1.job != job || mock2.job != nil {
t.Fatalf("TestSubject_Fetch failed")
}
job.group = ""
s.Notify(job)
if mock1.job != job && mock2.job != job {
t.Fatalf("TestSubject_Fetch failed")
}
}