You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2015/09/12 00:00:32 UTC
[07/16] lucy git commit: Test Go bindings for BitVector.
Test Go bindings for BitVector.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/b76fe6aa
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/b76fe6aa
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/b76fe6aa
Branch: refs/heads/master
Commit: b76fe6aadf3c74071b444d0d3728bf83ed1e63fa
Parents: 0c44c9f
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Wed Aug 12 14:23:37 2015 -0700
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Wed Sep 9 18:25:23 2015 -0700
----------------------------------------------------------------------
go/lucy/object_test.go | 122 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 122 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/b76fe6aa/go/lucy/object_test.go
----------------------------------------------------------------------
diff --git a/go/lucy/object_test.go b/go/lucy/object_test.go
new file mode 100644
index 0000000..51ebe83
--- /dev/null
+++ b/go/lucy/object_test.go
@@ -0,0 +1,122 @@
+/* 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 lucy
+
+import "testing"
+import _ "git-wip-us.apache.org/repos/asf/lucy-clownfish.git/runtime/go/clownfish"
+
+func TestBitVecSingle(t *testing.T) {
+ bitVec := NewBitVector(0)
+ if bitVec.Get(31) {
+ t.Error("Get for unset bit")
+ }
+ bitVec.Set(31)
+ if !bitVec.Get(31) {
+ t.Error("Get for true bit")
+ }
+ bitVec.Clear(31)
+ if bitVec.Get(31) {
+ t.Error("Get for cleared bit")
+ }
+ bitVec.Flip(31)
+ if !bitVec.Get(31) {
+ t.Error("Get for flipped bit")
+ }
+ if hit := bitVec.NextHit(0); hit != 31 {
+ t.Error("NextHit should find hit")
+ }
+ if hit := bitVec.NextHit(32); hit != -1 {
+ t.Error("NextHit exhausted")
+ }
+}
+
+func TestBitVecMisc(t *testing.T) {
+ bitVec := NewBitVector(0)
+ oldCap := bitVec.GetCapacity()
+ bitVec.Grow(64)
+ if newCap := bitVec.GetCapacity(); newCap <= oldCap {
+ t.Error("Grow/GetCapacity had unexpected result: %v %v", oldCap, newCap)
+ }
+ bitVec.Set(0)
+ bitVec.Set(63)
+ bools := bitVec.ToArray()
+ count := 0;
+ for _, val := range bools {
+ if val {
+ count++
+ }
+ }
+ if count != 2 {
+ t.Error("ToArray yielded bad count: %d", count)
+ }
+}
+
+func TestBitVecBlock(t *testing.T) {
+ bitVec := NewBitVector(0)
+ bitVec.FlipBlock(10, 10)
+ if count := bitVec.Count(); count != 10 {
+ t.Error("FlipBlock")
+ }
+ bitVec.FlipBlock(15, 5)
+ if count := bitVec.Count(); count != 5 {
+ t.Error("FlipBlock mixed")
+ }
+ bitVec.ClearAll()
+ if count := bitVec.Count(); count != 0 {
+ t.Error("ClearAll")
+ }
+}
+
+func TestBitVecBool(t *testing.T) {
+ var dupe BitVector
+ seven := NewBitVector(0);
+ twelve := NewBitVector(0);
+ seven.FlipBlock(0, 3) // 0111
+ twelve.FlipBlock(2, 2) // 1100
+
+ dupe = seven.Clone().(BitVector)
+ dupe.And(twelve)
+ if count := dupe.Count(); count != 1 {
+ t.Errorf("And: %d", count)
+ }
+
+ dupe = seven.Clone().(BitVector)
+ dupe.Or(twelve)
+ if count := dupe.Count(); count != 4 {
+ t.Errorf("Or: %d", count)
+ }
+
+ dupe = seven.Clone().(BitVector)
+ dupe.Xor(twelve)
+ if count := dupe.Count(); count != 3 {
+ t.Errorf("Xor: %d", count)
+ }
+
+ dupe = seven.Clone().(BitVector)
+ dupe.AndNot(twelve)
+ if count := dupe.Count(); count != 2 {
+ t.Errorf("AndNot: %d", count)
+ }
+
+ dupe = seven.Clone().(BitVector)
+ dupe.Mimic(twelve)
+ if count := dupe.Count(); count != twelve.Count() {
+ t.Errorf("Mimic: %d", count)
+ }
+}
+
+