Tune and test Go bindings for Segment.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/c8df9f63 Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/c8df9f63 Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/c8df9f63 Branch: refs/heads/master Commit: c8df9f639b10cf4687669daaf8e1628268b89698 Parents: 5cbd112 Author: Marvin Humphrey <[email protected]> Authored: Sat Oct 31 21:01:24 2015 -0700 Committer: Marvin Humphrey <[email protected]> Committed: Sun Nov 1 10:00:35 2015 -0800 ---------------------------------------------------------------------- go/build.go | 5 ++++ go/lucy/index.go | 17 ++++++++++++++ go/lucy/index_test.go | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/c8df9f63/go/build.go ---------------------------------------------------------------------- diff --git a/go/build.go b/go/build.go index 3b0a95d..6060f5b 100644 --- a/go/build.go +++ b/go/build.go @@ -183,6 +183,11 @@ func specClasses(parcel *cfc.Parcel) { snapshotBinding.SpecMethod("Write_File", "WriteFile(Folder, string) error") snapshotBinding.Register() + segBinding := cfc.NewGoClass(parcel, "Lucy::Index::Segment") + segBinding.SpecMethod("Read_File", "ReadFile(Folder) error") + segBinding.SpecMethod("Write_File", "WriteFile(Folder) error") + segBinding.Register() + schemaBinding := cfc.NewGoClass(parcel, "Lucy::Plan::Schema") schemaBinding.SpecMethod("All_Fields", "AllFields() []string") schemaBinding.Register() http://git-wip-us.apache.org/repos/asf/lucy/blob/c8df9f63/go/lucy/index.go ---------------------------------------------------------------------- diff --git a/go/lucy/index.go b/go/lucy/index.go index 18a9992..f186f7d 100644 --- a/go/lucy/index.go +++ b/go/lucy/index.go @@ -21,6 +21,7 @@ package lucy #include "Lucy/Index/IndexManager.h" #include "Lucy/Index/BackgroundMerger.h" #include "Lucy/Index/TermVector.h" +#include "Lucy/Index/Segment.h" #include "Lucy/Index/Snapshot.h" #include "Lucy/Document/Doc.h" #include "Lucy/Plan/Schema.h" @@ -367,3 +368,19 @@ func (s *SnapshotIMP) WriteFile(folder Folder, path string) error { C.LUCY_Snapshot_Write_File(self, folderC, pathC) }) } + +func (s *SegmentIMP) WriteFile(folder Folder) error { + return clownfish.TrapErr(func() { + self := (*C.lucy_Segment)(clownfish.Unwrap(s, "s")) + folderC := (*C.lucy_Folder)(clownfish.Unwrap(folder, "folder")) + C.LUCY_Seg_Write_File(self, folderC) + }) +} + +func (s *SegmentIMP) ReadFile(folder Folder) error { + return clownfish.TrapErr(func() { + self := (*C.lucy_Segment)(clownfish.Unwrap(s, "s")) + folderC := (*C.lucy_Folder)(clownfish.Unwrap(folder, "folder")) + C.LUCY_Seg_Read_File(self, folderC) + }) +} http://git-wip-us.apache.org/repos/asf/lucy/blob/c8df9f63/go/lucy/index_test.go ---------------------------------------------------------------------- diff --git a/go/lucy/index_test.go b/go/lucy/index_test.go index 842ec2e..d60e59b 100644 --- a/go/lucy/index_test.go +++ b/go/lucy/index_test.go @@ -428,3 +428,60 @@ func TestSortCacheMisc(t *testing.T) { t.Errorf("recent index shouldn't have native ords") } } + +func TestSegmentMisc(t *testing.T) { + var err error + + seg := NewSegment(4) + if name := seg.GetName(); name != "seg_4" { + t.Errorf("GetName: %s", name) + } + if num := seg.GetNumber(); num != 4 { + t.Errorf("GetNumber: %d", num) + } + + if num := seg.AddField("field1"); num != 1 { + t.Errorf("AddField: %d", num) + } + if field := seg.FieldName(1); field != "field1" { + t.Errorf("FieldName: %v", field) + } + if num := seg.FieldNum("field1"); num != 1 { + t.Errorf("FieldNum: %d", num) + } + + metadata := map[string]interface{}{ + "foo": "1", + "bar": "2", + } + seg.StoreMetadata("mycomponent", metadata) + if got := seg.FetchMetadata("mycomponent"); !reflect.DeepEqual(got, metadata) { + t.Errorf("Store/FetchMetadata: %v", got) + } + if got := seg.GetMetadata(); got["mycomponent"] == nil { + t.Errorf("%v", got) + } + + seg.SetCount(42) + seg.IncrementCount(5) + if got := seg.GetCount(); got != 47 { + t.Errorf("SetCount/GetCount: %d", got) + } + + folder := NewRAMFolder("") + folder.MkDir("seg_4") + err = seg.WriteFile(folder) + if err != nil { + t.Errorf("WriteFile: %v", err) + } + dupe := NewSegment(4) + dupe.ReadFile(folder) + if err != nil { + t.Errorf("WriteFile: %v", err) + } + + other := NewSegment(5) + if got := seg.CompareTo(other); got >= 0 { + t.Errorf("CompareTo (seg 4 vs seg 5): %d", got) + } +}
