added sorted set

pixdigit_sync
Pixdigit 5 years ago
parent 0d13d11069
commit 76c4ab31ec

@ -16,14 +16,14 @@ type uniqueElem interface {
type setElem struct {
value num
elem *uniqueElem
elem uniqueElem
}
func (se *setElem) ID() uniqueID.ID {
return se.elem.ID()
}
func (s *Set) Insert(uElem *uniqueElem, value num) error {
func (s *Set) Insert(uElem uniqueElem, value num) error {
for _, elem := range s.elems {
if elem.ID() == uElem.ID() {
return &ErrDuplicateElement{"element already present in set"}

@ -12,9 +12,14 @@ type testElem struct {
Name string
}
func NewSampleElem(IDSpace uniqueID.IDSpace, name string) *testElem {
var lastID uniqueID.ID
func NewSampleElem(IDSpace *uniqueID.IDSpace, name string) *testElem {
newID := IDSpace.NewID()
lastID = newID
return &testElem{
IDSpace.NewID(),
newID,
name,
}
}
@ -24,24 +29,27 @@ func (te *testElem) ID() uniqueID.ID {
func TestSet(t *testing.T) {
testIDSpace := uniqueID.IDSpace{}
testIDSpace := &uniqueID.IDSpace{}
set := Set{}
set.Insert(NewSampleElem(testIDSpace, "a"), 1)
set.Insert(NewSampleElem(testIDSpace, "b"), 2)
set.Insert(NewSampleElem(testIDSpace, "c"), 3)
set.Insert(NewSampleElem(testIDSpace, "d"), 5)
set.Insert(NewSampleElem(testIDSpace, "e"), 4)
err := set.Insert(NewSampleElem(testIDSpace, "a"), 1); if err != nil {tools.WrapErr(err, "could not insert test element", t)}
err = set.Insert(NewSampleElem(testIDSpace, "b"), 2); if err != nil {tools.WrapErr(err, "could not insert test element", t)}
err = set.Insert(NewSampleElem(testIDSpace, "c"), 3); if err != nil {tools.WrapErr(err, "could not insert test element", t)}
err = set.Insert(NewSampleElem(testIDSpace, "d"), 5); if err != nil {tools.WrapErr(err, "could not insert test element", t)}
err = set.Insert(NewSampleElem(testIDSpace, "e"), 4); if err != nil {tools.WrapErr(err, "could not insert test element", t)}
value, err := set.Nearest(3.2); if err != nil {tools.WrapErr(err, "could not get element from set", t)}
tools.Test(value == "c", "did not get corrent element", t)
tools.Test(value.(*testElem).Name == "c", "did not get corrent element", t)
value, err = set.Nearest(3.8); if err != nil {tools.WrapErr(err, "could not get element from set", t)}
tools.Test(value == "e", "did not get corrent element", t)
tools.Test(value.(*testElem).Name == "e", "did not get corrent element", t)
value, err = set.Nearest(8); if err != nil {tools.WrapErr(err, "could not get element from set", t)}
tools.Test(value == "d", "did not get corrent element", t)
tools.Test(value.(*testElem).Name == "d", "did not get corrent element", t)
value, err = set.Nearest(-2); if err != nil {tools.WrapErr(err, "could not get element from set", t)}
tools.Test(value == "a", "did not get corrent element", t)
tools.Test(value.(*testElem).Name == "a", "did not get corrent element", t)
value, err = set.Nearest(2); if err != nil {tools.WrapErr(err, "could not get element from set", t)}
tools.Test(value == "b", "did not get corrent element", t)
tools.Test(value.(*testElem).Name == "b", "did not get corrent element", t)
tools.Test(set.Contains(lastID), "set did not contain added element", t)
t.Log(set.String())

Loading…
Cancel
Save