lucy-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mar...@apache.org
Subject [12/15] lucy git commit: Tune and test Go bindings for Snapshot.
Date Sat, 07 Nov 2015 02:49:01 GMT
Tune and test Go bindings for Snapshot.


Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/a8bb3b5e
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/a8bb3b5e
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/a8bb3b5e

Branch: refs/heads/master
Commit: a8bb3b5e03d3a28996705488ecbdbf54b4206f4e
Parents: 8eefef8
Author: Marvin Humphrey <marvin@rectangular.com>
Authored: Sat Oct 31 15:12:23 2015 -0700
Committer: Marvin Humphrey <marvin@rectangular.com>
Committed: Sun Nov 1 10:00:35 2015 -0800

----------------------------------------------------------------------
 go/build.go           |  6 ++++++
 go/lucy/index.go      | 29 +++++++++++++++++++++++++++++
 go/lucy/index_test.go | 30 ++++++++++++++++++++++++++++++
 3 files changed, 65 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/a8bb3b5e/go/build.go
----------------------------------------------------------------------
diff --git a/go/build.go b/go/build.go
index 75fe5b5..3b0a95d 100644
--- a/go/build.go
+++ b/go/build.go
@@ -177,6 +177,12 @@ func specClasses(parcel *cfc.Parcel) {
 	tvBinding.SetSuppressCtor(true)
 	tvBinding.Register()
 
+	snapshotBinding := cfc.NewGoClass(parcel, "Lucy::Index::Snapshot")
+	snapshotBinding.SpecMethod("List", "List() []string")
+	snapshotBinding.SpecMethod("Read_File", "ReadFile(Folder, string) (Snapshot, error)")
+	snapshotBinding.SpecMethod("Write_File", "WriteFile(Folder, string) error")
+	snapshotBinding.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/a8bb3b5e/go/lucy/index.go
----------------------------------------------------------------------
diff --git a/go/lucy/index.go b/go/lucy/index.go
index 43dc90c..18a9992 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/Snapshot.h"
 #include "Lucy/Document/Doc.h"
 #include "Lucy/Plan/Schema.h"
 #include "Clownfish/Hash.h"
@@ -338,3 +339,31 @@ func (tv *TermVectorIMP) GetEndOffsets() []int32 {
 	self := (*C.lucy_TermVector)(clownfish.Unwrap(tv, "tv"))
 	return i32ArrayToSlice(C.LUCY_TV_Get_End_Offsets(self))
 }
+
+func (s *SnapshotIMP) List() []string {
+	self := (*C.lucy_Snapshot)(clownfish.Unwrap(s, "s"))
+	retvalC := C.LUCY_Snapshot_List(self)
+	defer C.cfish_decref(unsafe.Pointer(retvalC))
+	return vecToStringSlice(retvalC)
+}
+
+func (s *SnapshotIMP) ReadFile(folder Folder, path string) (Snapshot, error) {
+	err := clownfish.TrapErr(func() {
+		self := (*C.lucy_Snapshot)(clownfish.Unwrap(s, "s"))
+		folderC := (*C.lucy_Folder)(clownfish.Unwrap(folder, "folder"))
+		pathC := (*C.cfish_String)(clownfish.GoToClownfish(path, unsafe.Pointer(C.CFISH_STRING),
false))
+		defer C.cfish_decref(unsafe.Pointer(pathC))
+		C.LUCY_Snapshot_Read_File(self, folderC, pathC)
+	})
+	return s, err
+}
+
+func (s *SnapshotIMP) WriteFile(folder Folder, path string) error {
+	return clownfish.TrapErr(func() {
+		self := (*C.lucy_Snapshot)(clownfish.Unwrap(s, "s"))
+		folderC := (*C.lucy_Folder)(clownfish.Unwrap(folder, "folder"))
+		pathC := (*C.cfish_String)(clownfish.GoToClownfish(path, unsafe.Pointer(C.CFISH_STRING),
false))
+		defer C.cfish_decref(unsafe.Pointer(pathC))
+		C.LUCY_Snapshot_Write_File(self, folderC, pathC)
+	})
+}

http://git-wip-us.apache.org/repos/asf/lucy/blob/a8bb3b5e/go/lucy/index_test.go
----------------------------------------------------------------------
diff --git a/go/lucy/index_test.go b/go/lucy/index_test.go
index bdfe05a..c4e70f9 100644
--- a/go/lucy/index_test.go
+++ b/go/lucy/index_test.go
@@ -323,3 +323,33 @@ func TestTermVectorMisc(t *testing.T) {
 		t.Errorf("Unsuccessful serialization round trip")
 	}
 }
+
+func TestSnapshotMisc(t *testing.T) {
+	var err error
+	snapshot := NewSnapshot()
+	snapshot.AddEntry("foo")
+	snapshot.AddEntry("bar")
+	snapshot.DeleteEntry("bar")
+	if got := snapshot.NumEntries(); got != 1 {
+		t.Errorf("Add/DeleteEntry, NumEntries: %d", got)
+	}
+	if got := snapshot.List(); !reflect.DeepEqual(got, []string{"foo"}) {
+		t.Errorf("List: %v", got)
+	}
+	folder := NewRAMFolder("")
+	err = snapshot.WriteFile(folder, "")
+	if err != nil {
+		t.Errorf("WriteFile: %v", err)
+	}
+	other := NewSnapshot()
+	_, err = other.ReadFile(folder, "")
+	if err != nil {
+		t.Errorf("ReadFile: %v", err)
+	}
+
+	path := "snapshot_4.json"
+	snapshot.SetPath(path)
+	if got := snapshot.GetPath(); got != path {
+		t.Errorf("SetPath/GetPath: %v", path)
+	}
+}


Mime
View raw message