| Index: service/datastore/types_test.go
|
| diff --git a/service/datastore/types_test.go b/service/datastore/types_test.go
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c79dbb9dfdb4a83f860a94c27ef9d42b782be2ad
|
| --- /dev/null
|
| +++ b/service/datastore/types_test.go
|
| @@ -0,0 +1,102 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package datastore
|
| +
|
| +import (
|
| + "testing"
|
| +
|
| + . "github.com/smartystreets/goconvey/convey"
|
| +)
|
| +
|
| +func TestExistsResult(t *testing.T) {
|
| + t.Parallel()
|
| +
|
| + Convey(`Testing ExistsResult`, t, func() {
|
| + var er ExistsResult
|
| +
|
| + Convey(`With no elements`, func() {
|
| + er.init()
|
| +
|
| + So(er.All(), ShouldBeTrue)
|
| + So(er.Any(), ShouldBeFalse)
|
| + So(er.List(), ShouldResemble, BoolList{})
|
| + })
|
| +
|
| + Convey(`With single-tier elements`, func() {
|
| + er.init(1, 1, 1, 1)
|
| +
|
| + So(er.All(), ShouldBeFalse)
|
| + So(er.Any(), ShouldBeFalse)
|
| + So(er.List(), ShouldResemble, BoolList{false, false, false, false})
|
| +
|
| + er.set(0, 0)
|
| + er.set(2, 0)
|
| +
|
| + So(er.All(), ShouldBeFalse)
|
| + So(er.Any(), ShouldBeTrue)
|
| + So(er.List(), ShouldResemble, BoolList{true, false, true, false})
|
| + So(er.List(0), ShouldResemble, BoolList{true})
|
| + So(er.Get(0, 0), ShouldBeTrue)
|
| + So(er.List(1), ShouldResemble, BoolList{false})
|
| + So(er.Get(1, 0), ShouldBeFalse)
|
| + So(er.List(2), ShouldResemble, BoolList{true})
|
| + So(er.Get(2, 0), ShouldBeTrue)
|
| + So(er.List(3), ShouldResemble, BoolList{false})
|
| + So(er.Get(3, 0), ShouldBeFalse)
|
| + })
|
| +
|
| + Convey(`With combined single- and multi-tier elements`, func() {
|
| + er.init(1, 0, 3, 2)
|
| +
|
| + So(er.All(), ShouldBeFalse)
|
| + So(er.Any(), ShouldBeFalse)
|
| + So(er.List(), ShouldResemble, BoolList{false, false, false, false})
|
| +
|
| + // Set everything except (2, 1).
|
| + er.set(0, 0)
|
| + er.set(2, 0)
|
| + er.set(2, 2)
|
| + er.set(3, 0)
|
| + er.set(3, 1)
|
| +
|
| + er.updateSlices()
|
| + So(er.All(), ShouldBeFalse)
|
| + So(er.Any(), ShouldBeTrue)
|
| + So(er.List(), ShouldResemble, BoolList{true, true, false, true})
|
| + So(er.List(0), ShouldResemble, BoolList{true})
|
| + So(er.List(1), ShouldResemble, BoolList(nil))
|
| + So(er.List(2), ShouldResemble, BoolList{true, false, true})
|
| + So(er.Get(2, 0), ShouldBeTrue)
|
| + So(er.Get(2, 1), ShouldBeFalse)
|
| + So(er.List(3), ShouldResemble, BoolList{true, true})
|
| +
|
| + // Set the missing boolean.
|
| + er.set(2, 1)
|
| + er.updateSlices()
|
| + So(er.All(), ShouldBeTrue)
|
| + })
|
| +
|
| + Convey(`Zero-length slices are handled properly.`, func() {
|
| + er.init(1, 0, 0, 1)
|
| +
|
| + er.updateSlices()
|
| + So(er.List(), ShouldResemble, BoolList{false, true, true, false})
|
| + So(er.All(), ShouldBeFalse)
|
| + So(er.Any(), ShouldBeFalse)
|
| +
|
| + er.set(0, 0)
|
| + er.updateSlices()
|
| + So(er.List(), ShouldResemble, BoolList{true, true, true, false})
|
| + So(er.All(), ShouldBeFalse)
|
| + So(er.Any(), ShouldBeTrue)
|
| +
|
| + er.set(3, 0)
|
| + er.updateSlices()
|
| + So(er.List(), ShouldResemble, BoolList{true, true, true, true})
|
| + So(er.All(), ShouldBeTrue)
|
| + So(er.Any(), ShouldBeTrue)
|
| + })
|
| + })
|
| +}
|
|
|