blob: db39fef5e60a9054261bd69e0388c2297ebf37ba [file] [log] [blame]
// Copyright 2015 The LUCI Authors.
//
// Licensed 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 datastore
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestMultiMetaGetter(t *testing.T) {
t.Parallel()
Convey("Test MultiMetaGetter", t, func() {
Convey("nil", func() {
mmg := NewMultiMetaGetter(nil)
val, ok := mmg.GetMeta(7, "hi")
So(ok, ShouldBeFalse)
So(val, ShouldBeNil)
So(GetMetaDefault(mmg.GetSingle(7), "hi", "value"), ShouldEqual, "value")
m := mmg.GetSingle(10)
val, ok = m.GetMeta("hi")
So(ok, ShouldBeFalse)
So(val, ShouldBeNil)
So(GetMetaDefault(m, "hi", "value"), ShouldEqual, "value")
})
Convey("stuff", func() {
pmaps := []PropertyMap{{}, nil, {}}
So(pmaps[0].SetMeta("hi", "thing"), ShouldBeTrue)
So(pmaps[2].SetMeta("key", 100), ShouldBeTrue)
mmg := NewMultiMetaGetter(pmaps)
// oob is OK
So(GetMetaDefault(mmg.GetSingle(7), "hi", "value"), ShouldEqual, "value")
// nil is OK
So(GetMetaDefault(mmg.GetSingle(1), "key", true), ShouldEqual, true)
val, ok := mmg.GetMeta(0, "hi")
So(ok, ShouldBeTrue)
So(val, ShouldEqual, "thing")
So(GetMetaDefault(mmg.GetSingle(2), "key", 20), ShouldEqual, 100)
})
})
}