You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2016/07/15 11:12:03 UTC

[11/22] lucy git commit: Move tests to separate directory

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestFolder.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestFolder.c b/core/Lucy/Test/Store/TestFolder.c
deleted file mode 100644
index e94d474..0000000
--- a/core/Lucy/Test/Store/TestFolder.c
+++ /dev/null
@@ -1,540 +0,0 @@
-/* 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.
- */
-
-#define C_LUCY_RAMFOLDER
-#define TESTLUCY_USE_SHORT_NAMES
-#include "Lucy/Util/ToolSet.h"
-
-#include "Clownfish/Blob.h"
-#include "Clownfish/TestHarness/TestBatchRunner.h"
-#include "Lucy/Test.h"
-#include "Lucy/Test/Store/TestFolder.h"
-#include "Lucy/Store/DirHandle.h"
-#include "Lucy/Store/FileHandle.h"
-#include "Lucy/Store/InStream.h"
-#include "Lucy/Store/OutStream.h"
-#include "Lucy/Store/RAMFolder.h"
-
-static String *foo               = NULL;
-static String *bar               = NULL;
-static String *baz               = NULL;
-static String *boffo             = NULL;
-static String *banana            = NULL;
-static String *foo_bar           = NULL;
-static String *foo_bar_baz       = NULL;
-static String *foo_bar_baz_boffo = NULL;
-static String *foo_boffo         = NULL;
-static String *foo_foo           = NULL;
-static String *nope              = NULL;
-
-TestFolder*
-TestFolder_new() {
-    return (TestFolder*)Class_Make_Obj(TESTFOLDER);
-}
-
-static void
-S_init_strings(void) {
-    foo               = Str_newf("foo");
-    bar               = Str_newf("bar");
-    baz               = Str_newf("baz");
-    boffo             = Str_newf("boffo");
-    banana            = Str_newf("banana");
-    foo_bar           = Str_newf("foo/bar");
-    foo_bar_baz       = Str_newf("foo/bar/baz");
-    foo_bar_baz_boffo = Str_newf("foo/bar/baz/boffo");
-    foo_boffo         = Str_newf("foo/boffo");
-    foo_foo           = Str_newf("foo/foo");
-    nope              = Str_newf("nope");
-}
-
-static void
-S_destroy_strings(void) {
-    DECREF(foo);
-    DECREF(bar);
-    DECREF(baz);
-    DECREF(boffo);
-    DECREF(banana);
-    DECREF(foo_bar);
-    DECREF(foo_bar_baz);
-    DECREF(foo_bar_baz_boffo);
-    DECREF(foo_boffo);
-    DECREF(foo_foo);
-    DECREF(nope);
-}
-
-static void
-test_Exists(TestBatchRunner *runner) {
-    Folder *folder = (Folder*)RAMFolder_new(NULL);
-    FileHandle *fh;
-
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-    fh = Folder_Open_FileHandle(folder, boffo, FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-    fh = Folder_Open_FileHandle(folder, foo_boffo,
-                                FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-
-    TEST_TRUE(runner, Folder_Exists(folder, foo), "Dir exists");
-    TEST_TRUE(runner, Folder_Exists(folder, boffo), "File exists");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_bar),
-              "Nested dir exists");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-              "Nested file exists");
-
-    TEST_FALSE(runner, Folder_Exists(folder, banana),
-               "Non-existent entry");
-    TEST_FALSE(runner, Folder_Exists(folder, foo_foo),
-               "Non-existent nested entry");
-
-    DECREF(folder);
-}
-
-static void
-test_Set_Path_and_Get_Path(TestBatchRunner *runner) {
-    Folder *folder = (Folder*)RAMFolder_new(foo);
-    TEST_TRUE(runner, Str_Equals(Folder_Get_Path(folder), (Obj*)foo),
-              "Get_Path");
-    Folder_Set_Path(folder, bar);
-    TEST_TRUE(runner, Str_Equals(Folder_Get_Path(folder), (Obj*)bar),
-              "Set_Path");
-    DECREF(folder);
-}
-
-static void
-test_MkDir_and_Is_Directory(TestBatchRunner *runner) {
-    Folder *folder = (Folder*)RAMFolder_new(NULL);
-    FileHandle *fh;
-
-    TEST_FALSE(runner, Folder_Is_Directory(folder, foo),
-               "Is_Directory() false for non-existent entry");
-
-    TEST_TRUE(runner, Folder_MkDir(folder, foo),
-              "MkDir returns true on success");
-    TEST_TRUE(runner, Folder_Is_Directory(folder, foo),
-              "Is_Directory() true for local folder");
-
-    TEST_FALSE(runner, Folder_Is_Directory(folder, foo_bar_baz),
-               "Is_Directory() false for non-existent deeply nested dir");
-    Err_set_error(NULL);
-    TEST_FALSE(runner, Folder_MkDir(folder, foo_bar_baz),
-               "MkDir for deeply nested dir fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "MkDir for deeply nested dir sets global error");
-
-    TEST_TRUE(runner, Folder_MkDir(folder, foo_bar),
-              "MkDir for nested dir");
-    TEST_TRUE(runner, Folder_Is_Directory(folder, foo_bar),
-              "Is_Directory() true for nested dir");
-
-    Err_set_error(NULL);
-    TEST_FALSE(runner, Folder_MkDir(folder, foo_bar),
-               "Overwrite dir with MkDir fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Overwrite dir with MkDir sets global error");
-
-    fh = Folder_Open_FileHandle(folder, foo_boffo,
-                                FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-    Err_set_error(NULL);
-    TEST_FALSE(runner, Folder_MkDir(folder, foo_boffo),
-               "Overwrite file with MkDir fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Overwrite file with MkDir sets global error");
-    TEST_FALSE(runner, Folder_Is_Directory(folder, foo_boffo),
-               "Is_Directory() false for nested file");
-
-    DECREF(folder);
-}
-
-static void
-test_Enclosing_Folder_and_Find_Folder(TestBatchRunner *runner) {
-    Folder *folder = (Folder*)RAMFolder_new(NULL);
-    FileHandle *fh;
-
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-    Folder_MkDir(folder, foo_bar_baz);
-    fh = Folder_Open_FileHandle(folder, foo_bar_baz_boffo,
-                                FH_CREATE | FH_WRITE_ONLY);
-
-    {
-        Folder *encloser = Folder_Enclosing_Folder(folder, (String*)nope);
-        Folder *found = Folder_Find_Folder(folder, (String*)nope);
-        TEST_TRUE(runner, encloser == folder,
-                  "Enclosing_Folder() - non-existent entry yields parent");
-        TEST_TRUE(runner, found == NULL,
-                  "Find_Folder() - non-existent entry yields NULL");
-    }
-
-    {
-        Folder *encloser = Folder_Enclosing_Folder(folder, foo_bar);
-        Folder *found = Folder_Find_Folder(folder, foo_bar);
-        TEST_TRUE(runner,
-                  encloser
-                  && Folder_is_a(encloser, FOLDER)
-                  && Str_Ends_With(Folder_Get_Path(encloser), foo),
-                  "Enclosing_Folder() - find one directory down");
-        TEST_TRUE(runner,
-                  found
-                  && Folder_is_a(found, FOLDER)
-                  && Str_Ends_With(Folder_Get_Path(found), bar),
-                  "Find_Folder() - 'foo/bar'");
-    }
-
-    {
-        Folder *encloser = Folder_Enclosing_Folder(folder, foo_bar_baz);
-        Folder *found = Folder_Find_Folder(folder, foo_bar_baz);
-        TEST_TRUE(runner,
-                  encloser
-                  && Folder_is_a(encloser, FOLDER)
-                  && Str_Ends_With(Folder_Get_Path(encloser), bar),
-                  "Find two directories down");
-        TEST_TRUE(runner,
-                  found
-                  && Folder_is_a(found, FOLDER)
-                  && Str_Ends_With(Folder_Get_Path(found), baz),
-                  "Find_Folder() - 'foo/bar/baz'");
-    }
-
-    {
-        Folder *encloser
-            = Folder_Enclosing_Folder(folder, foo_bar_baz_boffo);
-        Folder *found = Folder_Find_Folder(folder, foo_bar_baz_boffo);
-        TEST_TRUE(runner,
-                  encloser
-                  && Folder_is_a(encloser, FOLDER)
-                  && Str_Ends_With(Folder_Get_Path(encloser), baz),
-                  "Recurse to find a directory containing a real file");
-        TEST_TRUE(runner, found == NULL,
-                  "Find_Folder() - file instead of folder yields NULL");
-    }
-
-    DECREF(fh);
-    DECREF(folder);
-}
-
-static void
-test_List(TestBatchRunner *runner) {
-    Folder     *folder = (Folder*)RAMFolder_new(NULL);
-    FileHandle *fh;
-    Vector     *list;
-    String     *elem;
-
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-    Folder_MkDir(folder, foo_bar_baz);
-    fh = Folder_Open_FileHandle(folder, boffo, FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-    fh = Folder_Open_FileHandle(folder, banana, FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-
-    list = Folder_List(folder, NULL);
-    Vec_Sort(list);
-    TEST_UINT_EQ(runner, Vec_Get_Size(list), 3, "List");
-    elem = (String*)DOWNCAST(Vec_Fetch(list, 0), STRING);
-    TEST_TRUE(runner, elem && Str_Equals(elem, (Obj*)banana),
-              "List first file");
-    elem = (String*)DOWNCAST(Vec_Fetch(list, 1), STRING);
-    TEST_TRUE(runner, elem && Str_Equals(elem, (Obj*)boffo),
-              "List second file");
-    elem = (String*)DOWNCAST(Vec_Fetch(list, 2), STRING);
-    TEST_TRUE(runner, elem && Str_Equals(elem, (Obj*)foo), "List dir");
-    DECREF(list);
-
-    list = Folder_List(folder, foo_bar);
-    TEST_UINT_EQ(runner, Vec_Get_Size(list), 1, "List subdirectory contents");
-    elem = (String*)DOWNCAST(Vec_Fetch(list, 0), STRING);
-    TEST_TRUE(runner, elem && Str_Equals(elem, (Obj*)baz),
-              "Just the filename");
-    DECREF(list);
-
-    DECREF(folder);
-}
-
-static void
-test_Open_Dir(TestBatchRunner *runner) {
-    Folder     *folder = (Folder*)RAMFolder_new(NULL);
-    DirHandle  *dh;
-
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-
-    dh = Folder_Open_Dir(folder, foo);
-    TEST_TRUE(runner, dh && DH_is_a(dh, DIRHANDLE), "Open_Dir");
-    DECREF(dh);
-    dh = Folder_Open_Dir(folder, foo_bar);
-    TEST_TRUE(runner, dh && DH_is_a(dh, DIRHANDLE), "Open_Dir nested dir");
-    DECREF(dh);
-
-    Err_set_error(NULL);
-    dh = Folder_Open_Dir(folder, bar);
-    TEST_TRUE(runner, dh == NULL,
-              "Open_Dir on non-existent entry fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Open_Dir on non-existent entry sets global error");
-
-    Err_set_error(NULL);
-    dh = Folder_Open_Dir(folder, foo_foo);
-    TEST_TRUE(runner, dh == NULL,
-              "Open_Dir on non-existent nested entry fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Open_Dir on non-existent nested entry sets global error");
-
-    DECREF(folder);
-}
-
-static void
-test_Open_FileHandle(TestBatchRunner *runner) {
-    Folder     *folder = (Folder*)RAMFolder_new(NULL);
-    FileHandle *fh;
-
-    Folder_MkDir(folder, foo);
-
-    fh = Folder_Open_FileHandle(folder, boffo, FH_CREATE | FH_WRITE_ONLY);
-    TEST_TRUE(runner, fh && FH_is_a(fh, FILEHANDLE), "Open_FileHandle");
-    DECREF(fh);
-
-    fh = Folder_Open_FileHandle(folder, foo_boffo,
-                                FH_CREATE | FH_WRITE_ONLY);
-    TEST_TRUE(runner, fh && FH_is_a(fh, FILEHANDLE),
-              "Open_FileHandle for nested file");
-    DECREF(fh);
-
-    Err_set_error(NULL);
-    fh = Folder_Open_FileHandle(folder, foo, FH_CREATE | FH_WRITE_ONLY);
-    TEST_TRUE(runner, fh == NULL,
-              "Open_FileHandle on existing dir path fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Open_FileHandle on existing dir name sets global error");
-
-    Err_set_error(NULL);
-    fh = Folder_Open_FileHandle(folder, foo_bar_baz_boffo,
-                                FH_CREATE | FH_WRITE_ONLY);
-    TEST_TRUE(runner, fh == NULL,
-              "Open_FileHandle for entry within non-existent dir fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Open_FileHandle for entry within non-existent dir sets global error");
-
-    DECREF(folder);
-}
-
-static void
-test_Open_Out(TestBatchRunner *runner) {
-    Folder    *folder = (Folder*)RAMFolder_new(NULL);
-    OutStream *outstream;
-
-    Folder_MkDir(folder, foo);
-
-    outstream = Folder_Open_Out(folder, boffo);
-    TEST_TRUE(runner, outstream && OutStream_is_a(outstream, OUTSTREAM),
-              "Open_Out");
-    DECREF(outstream);
-
-    outstream = Folder_Open_Out(folder, foo_boffo);
-    TEST_TRUE(runner, outstream && OutStream_is_a(outstream, OUTSTREAM),
-              "Open_Out for nested file");
-    DECREF(outstream);
-
-    Err_set_error(NULL);
-    outstream = Folder_Open_Out(folder, boffo);
-    TEST_TRUE(runner, outstream == NULL,
-              "Open_OutStream on existing file fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Open_Out on existing file sets global error");
-
-    Err_set_error(NULL);
-    outstream = Folder_Open_Out(folder, foo);
-    TEST_TRUE(runner, outstream == NULL,
-              "Open_OutStream on existing dir path fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Open_Out on existing dir name sets global error");
-
-    Err_set_error(NULL);
-    outstream = Folder_Open_Out(folder, foo_bar_baz_boffo);
-    TEST_TRUE(runner, outstream == NULL,
-              "Open_Out for entry within non-existent dir fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Open_Out for entry within non-existent dir sets global error");
-
-    DECREF(folder);
-}
-
-static void
-test_Open_In(TestBatchRunner *runner) {
-    Folder     *folder = (Folder*)RAMFolder_new(NULL);
-    FileHandle *fh;
-    InStream   *instream;
-
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-    fh = Folder_Open_FileHandle(folder, boffo, FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-    fh = Folder_Open_FileHandle(folder, foo_boffo, FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-
-    instream = Folder_Open_In(folder, boffo);
-    TEST_TRUE(runner, instream && InStream_is_a(instream, INSTREAM),
-              "Open_In");
-    DECREF(instream);
-
-    instream = Folder_Open_In(folder, foo_boffo);
-    TEST_TRUE(runner, instream && InStream_is_a(instream, INSTREAM),
-              "Open_In for nested file");
-    DECREF(instream);
-
-    Err_set_error(NULL);
-    instream = Folder_Open_In(folder, foo);
-    TEST_TRUE(runner, instream == NULL,
-              "Open_InStream on existing dir path fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Open_In on existing dir name sets global error");
-
-    Err_set_error(NULL);
-    instream = Folder_Open_In(folder, foo_bar_baz_boffo);
-    TEST_TRUE(runner, instream == NULL,
-              "Open_In for entry within non-existent dir fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Open_In for entry within non-existent dir sets global error");
-
-    DECREF(folder);
-}
-
-static void
-test_Delete(TestBatchRunner *runner) {
-    Folder *folder = (Folder*)RAMFolder_new(NULL);
-    FileHandle *fh;
-    bool result;
-
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-    fh = Folder_Open_FileHandle(folder, boffo, FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-    fh = Folder_Open_FileHandle(folder, foo_boffo,
-                                FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-
-    Err_set_error(NULL);
-    result = Folder_Delete(folder, banana);
-    TEST_FALSE(runner, result, "Delete on non-existent entry returns false");
-
-    Err_set_error(NULL);
-    result = Folder_Delete(folder, foo);
-    TEST_FALSE(runner, result, "Delete on non-empty dir returns false");
-
-    TEST_TRUE(runner, Folder_Delete(folder, foo_boffo),
-              "Delete nested file");
-    TEST_FALSE(runner, Folder_Exists(folder, foo_boffo),
-               "File is really gone");
-    TEST_TRUE(runner, Folder_Delete(folder, foo_bar),
-              "Delete nested dir");
-    TEST_FALSE(runner, Folder_Exists(folder, foo_bar),
-               "Dir is really gone");
-    TEST_TRUE(runner, Folder_Delete(folder, foo), "Delete empty dir");
-    TEST_FALSE(runner, Folder_Exists(folder, foo), "Dir is really gone");
-
-    DECREF(folder);
-}
-
-static void
-test_Delete_Tree(TestBatchRunner *runner) {
-    Folder *folder = (Folder*)RAMFolder_new(NULL);
-    FileHandle *fh;
-    bool result;
-
-    // Create tree to be deleted.
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-    Folder_MkDir(folder, foo_bar_baz);
-    fh = Folder_Open_FileHandle(folder, foo_bar_baz_boffo,
-                                FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-
-    // Create bystanders.
-    Folder_MkDir(folder, bar);
-    fh = Folder_Open_FileHandle(folder, baz, FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-
-    result = Folder_Delete_Tree(folder, foo);
-    TEST_TRUE(runner, result, "Delete_Tree() succeeded");
-    TEST_FALSE(runner, Folder_Exists(folder, foo), "Tree really gone");
-
-    TEST_TRUE(runner, Folder_Exists(folder, bar),
-              "local dir with same name as nested dir left intact");
-    TEST_TRUE(runner, Folder_Exists(folder, baz),
-              "local file with same name as nested dir left intact");
-
-    // Kill off the bystanders.
-    result = Folder_Delete_Tree(folder, bar);
-    TEST_TRUE(runner, result, "Delete_Tree() on empty dir");
-    result = Folder_Delete_Tree(folder, baz);
-    TEST_TRUE(runner, result, "Delete_Tree() on file");
-
-    // Create new tree to be deleted.
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-    Folder_MkDir(folder, foo_bar_baz);
-    fh = Folder_Open_FileHandle(folder, foo_bar_baz_boffo,
-                                FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-
-    // Remove tree in subdir.
-    result = Folder_Delete_Tree(folder, foo_bar);
-    TEST_TRUE(runner, result, "Delete_Tree() of subdir succeeded");
-    TEST_FALSE(runner, Folder_Exists(folder, foo_bar),
-               "subdir really gone");
-    TEST_TRUE(runner, Folder_Exists(folder, foo),
-              "enclosing dir left intact");
-
-    DECREF(folder);
-}
-
-static void
-test_Slurp_File(TestBatchRunner *runner) {
-    Folder *folder = (Folder*)RAMFolder_new(NULL);
-    FileHandle *fh = Folder_Open_FileHandle(folder, foo,
-                                            FH_CREATE | FH_WRITE_ONLY);
-    Blob *contents;
-
-    FH_Write(fh, "stuff", 5);
-    FH_Close(fh);
-    DECREF(fh);
-    contents = Folder_Slurp_File(folder, foo);
-    TEST_TRUE(runner, Blob_Equals_Bytes(contents, "stuff", 5), "Slurp_File");
-
-    DECREF(contents);
-    DECREF(folder);
-}
-
-void
-TestFolder_Run_IMP(TestFolder *self, TestBatchRunner *runner) {
-    TestBatchRunner_Plan(runner, (TestBatch*)self, 79);
-    S_init_strings();
-    test_Exists(runner);
-    test_Set_Path_and_Get_Path(runner);
-    test_MkDir_and_Is_Directory(runner);
-    test_Enclosing_Folder_and_Find_Folder(runner);
-    test_List(runner);
-    test_Open_Dir(runner);
-    test_Open_FileHandle(runner);
-    test_Open_Out(runner);
-    test_Open_In(runner);
-    test_Delete(runner);
-    test_Delete_Tree(runner);
-    test_Slurp_File(runner);
-    S_destroy_strings();
-}
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestFolder.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestFolder.cfh b/core/Lucy/Test/Store/TestFolder.cfh
deleted file mode 100644
index 6a5ecf4..0000000
--- a/core/Lucy/Test/Store/TestFolder.cfh
+++ /dev/null
@@ -1,29 +0,0 @@
-/* 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.
- */
-
-parcel TestLucy;
-
-class Lucy::Test::Store::TestFolder
-    inherits Clownfish::TestHarness::TestBatch {
-
-    inert incremented TestFolder*
-    new();
-
-    void
-    Run(TestFolder *self, TestBatchRunner *runner);
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestFolderCommon.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestFolderCommon.c b/core/Lucy/Test/Store/TestFolderCommon.c
deleted file mode 100644
index 07a9850..0000000
--- a/core/Lucy/Test/Store/TestFolderCommon.c
+++ /dev/null
@@ -1,562 +0,0 @@
-/* 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.
- */
-
-#define TESTLUCY_USE_SHORT_NAMES
-#include "Lucy/Util/ToolSet.h"
-
-#include "Lucy/Test.h"
-#include "Lucy/Test/Store/TestFolderCommon.h"
-#include "Clownfish/TestHarness/TestBatchRunner.h"
-#include "Lucy/Store/Folder.h"
-#include "Lucy/Store/DirHandle.h"
-#include "Lucy/Store/FileHandle.h"
-#include "Lucy/Store/InStream.h"
-#include "Lucy/Store/OutStream.h"
-
-#define set_up_t    LUCY_TestFolderCommon_Set_Up_t
-#define tear_down_t LUCY_TestFolderCommon_Tear_Down_t
-
-static String *foo           = NULL;
-static String *bar           = NULL;
-static String *baz           = NULL;
-static String *boffo         = NULL;
-static String *banana        = NULL;
-static String *foo_bar       = NULL;
-static String *foo_bar_baz   = NULL;
-static String *foo_bar_boffo = NULL;
-static String *foo_boffo     = NULL;
-static String *foo_foo       = NULL;
-static String *nope          = NULL;
-static String *nope_nyet     = NULL;
-
-static void
-S_init_strings(void) {
-    foo           = Str_newf("foo");
-    bar           = Str_newf("bar");
-    baz           = Str_newf("baz");
-    boffo         = Str_newf("boffo");
-    banana        = Str_newf("banana");
-    foo_bar       = Str_newf("foo/bar");
-    foo_bar_baz   = Str_newf("foo/bar/baz");
-    foo_bar_boffo = Str_newf("foo/bar/boffo");
-    foo_boffo     = Str_newf("foo/boffo");
-    foo_foo       = Str_newf("foo/foo");
-    nope          = Str_newf("nope");
-    nope_nyet     = Str_newf("nope/nyet");
-}
-
-static void
-S_destroy_strings(void) {
-    DECREF(foo);
-    DECREF(bar);
-    DECREF(baz);
-    DECREF(boffo);
-    DECREF(banana);
-    DECREF(foo_bar);
-    DECREF(foo_bar_baz);
-    DECREF(foo_bar_boffo);
-    DECREF(foo_boffo);
-    DECREF(foo_foo);
-    DECREF(nope);
-    DECREF(nope_nyet);
-}
-
-static void
-test_Local_Exists(TestBatchRunner *runner, set_up_t set_up, tear_down_t tear_down) {
-    Folder *folder = set_up();
-    OutStream *outstream = Folder_Open_Out(folder, boffo);
-    DECREF(outstream);
-    Folder_Local_MkDir(folder, foo);
-    outstream = Folder_Open_Out(folder, foo_boffo);
-    DECREF(outstream);
-
-    TEST_TRUE(runner, Folder_Local_Exists(folder, boffo),
-              "Local_Exists() returns true for file");
-    TEST_TRUE(runner, Folder_Local_Exists(folder, foo),
-              "Local_Exists() returns true for dir");
-    TEST_FALSE(runner, Folder_Local_Exists(folder, foo_boffo),
-               "Local_Exists() returns false for nested entry");
-    TEST_FALSE(runner, Folder_Local_Exists(folder, bar),
-               "Local_Exists() returns false for non-existent entry");
-
-    Folder_Delete(folder, foo_boffo);
-    Folder_Delete(folder, foo);
-    Folder_Delete(folder, boffo);
-    DECREF(folder);
-    tear_down();
-}
-
-static void
-test_Local_Is_Directory(TestBatchRunner *runner, set_up_t set_up,
-                        tear_down_t tear_down) {
-    Folder *folder = set_up();
-    OutStream *outstream = Folder_Open_Out(folder, boffo);
-    DECREF(outstream);
-    Folder_Local_MkDir(folder, foo);
-
-    TEST_FALSE(runner, Folder_Local_Is_Directory(folder, boffo),
-               "Local_Is_Directory() returns false for file");
-    TEST_TRUE(runner, Folder_Local_Is_Directory(folder, foo),
-              "Local_Is_Directory() returns true for dir");
-    TEST_FALSE(runner, Folder_Local_Is_Directory(folder, bar),
-               "Local_Is_Directory() returns false for non-existent entry");
-
-    Folder_Delete(folder, boffo);
-    Folder_Delete(folder, foo);
-    DECREF(folder);
-    tear_down();
-}
-
-static void
-test_Local_Find_Folder(TestBatchRunner *runner, set_up_t set_up,
-                       tear_down_t tear_down) {
-    Folder    *folder = set_up();
-    Folder    *local;
-    OutStream *outstream;
-
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-    outstream = Folder_Open_Out(folder, boffo);
-    DECREF(outstream);
-    outstream = Folder_Open_Out(folder, foo_boffo);
-    DECREF(outstream);
-
-    local = Folder_Local_Find_Folder(folder, nope);
-    TEST_TRUE(runner, local == NULL, "Non-existent entry yields NULL");
-
-    String *empty = SSTR_BLANK();
-    local = Folder_Local_Find_Folder(folder, empty);
-    TEST_TRUE(runner, local == NULL, "Empty string yields NULL");
-
-    local = Folder_Local_Find_Folder(folder, foo_bar);
-    TEST_TRUE(runner, local == NULL, "nested folder yields NULL");
-
-    local = Folder_Local_Find_Folder(folder, foo_boffo);
-    TEST_TRUE(runner, local == NULL, "nested file yields NULL");
-
-    local = Folder_Local_Find_Folder(folder, boffo);
-    TEST_TRUE(runner, local == NULL, "local file yields NULL");
-
-    local = Folder_Local_Find_Folder(folder, bar);
-    TEST_TRUE(runner, local == NULL, "name of nested folder yields NULL");
-
-    local = Folder_Local_Find_Folder(folder, foo);
-    TEST_TRUE(runner,
-              local
-              && Folder_is_a(local, FOLDER)
-              && Str_Ends_With(Folder_Get_Path(local), foo),
-              "Find local directory");
-
-    Folder_Delete(folder, foo_bar);
-    Folder_Delete(folder, foo_boffo);
-    Folder_Delete(folder, foo);
-    Folder_Delete(folder, boffo);
-    DECREF(folder);
-    tear_down();
-}
-
-static void
-test_Local_MkDir(TestBatchRunner *runner, set_up_t set_up, tear_down_t tear_down) {
-    Folder *folder = set_up();
-    bool result;
-
-    result = Folder_Local_MkDir(folder, foo);
-    TEST_TRUE(runner, result, "Local_MkDir succeeds and returns true");
-
-    Err_set_error(NULL);
-    result = Folder_Local_MkDir(folder, foo);
-    TEST_FALSE(runner, result,
-               "Local_MkDir returns false when a dir already exists");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Local_MkDir sets global error when a dir already exists");
-    TEST_TRUE(runner, Folder_Exists(folder, foo),
-              "Existing dir untouched after failed Local_MkDir");
-
-    OutStream *outstream = Folder_Open_Out(folder, boffo);
-    DECREF(outstream);
-    Err_set_error(NULL);
-    result = Folder_Local_MkDir(folder, foo);
-    TEST_FALSE(runner, result,
-               "Local_MkDir returns false when a file already exists");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Local_MkDir sets global error when a file already exists");
-    TEST_TRUE(runner, Folder_Exists(folder, boffo) &&
-              !Folder_Local_Is_Directory(folder, boffo),
-              "Existing file untouched after failed Local_MkDir");
-
-    Folder_Delete(folder, foo);
-    Folder_Delete(folder, boffo);
-    DECREF(folder);
-    tear_down();
-}
-
-static void
-test_Local_Open_Dir(TestBatchRunner *runner, set_up_t set_up, tear_down_t tear_down) {
-    Folder *folder = set_up();
-    DirHandle *dh = Folder_Local_Open_Dir(folder);
-    TEST_TRUE(runner, dh && DH_is_a(dh, DIRHANDLE),
-              "Local_Open_Dir returns an DirHandle");
-    DECREF(dh);
-    DECREF(folder);
-    tear_down();
-}
-
-static void
-test_Local_Open_FileHandle(TestBatchRunner *runner, set_up_t set_up,
-                           tear_down_t tear_down) {
-    Folder *folder = set_up();
-    FileHandle *fh;
-
-    fh = Folder_Local_Open_FileHandle(folder, boffo,
-                                      FH_CREATE | FH_WRITE_ONLY | FH_EXCLUSIVE);
-    TEST_TRUE(runner, fh && FH_is_a(fh, FILEHANDLE),
-              "opened FileHandle");
-    DECREF(fh);
-
-    fh = Folder_Local_Open_FileHandle(folder, boffo,
-                                      FH_CREATE | FH_WRITE_ONLY);
-    TEST_TRUE(runner, fh && FH_is_a(fh, FILEHANDLE),
-              "opened FileHandle for append");
-    DECREF(fh);
-
-    Err_set_error(NULL);
-    fh = Folder_Local_Open_FileHandle(folder, boffo,
-                                      FH_CREATE | FH_WRITE_ONLY | FH_EXCLUSIVE);
-    TEST_TRUE(runner, fh == NULL, "FH_EXLUSIVE flag prevents clobber");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "failure due to FH_EXLUSIVE flag sets global error");
-
-    fh = Folder_Local_Open_FileHandle(folder, boffo, FH_READ_ONLY);
-    TEST_TRUE(runner, fh && FH_is_a(fh, FILEHANDLE),
-              "opened FileHandle for reading");
-    DECREF(fh);
-
-    Err_set_error(NULL);
-    fh = Folder_Local_Open_FileHandle(folder, nope, FH_READ_ONLY);
-    TEST_TRUE(runner, fh == NULL,
-              "Can't open non-existent file for reading");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Opening non-existent file for reading sets global error");
-
-    Folder_Delete(folder, boffo);
-    DECREF(folder);
-    tear_down();
-}
-
-static void
-test_Local_Delete(TestBatchRunner *runner, set_up_t set_up, tear_down_t tear_down) {
-    Folder *folder = set_up();
-    OutStream *outstream;
-
-    outstream = Folder_Open_Out(folder, boffo);
-    DECREF(outstream);
-    TEST_TRUE(runner, Folder_Local_Delete(folder, boffo),
-              "Local_Delete on file succeeds");
-    TEST_FALSE(runner, Folder_Exists(folder, boffo),
-               "File is really gone");
-
-    Folder_Local_MkDir(folder, foo);
-    outstream = Folder_Open_Out(folder, foo_boffo);
-    DECREF(outstream);
-
-    Err_set_error(NULL);
-    TEST_FALSE(runner, Folder_Local_Delete(folder, foo),
-               "Local_Delete on non-empty dir fails");
-
-    Folder_Delete(folder, foo_boffo);
-    TEST_TRUE(runner, Folder_Local_Delete(folder, foo),
-              "Local_Delete on empty dir succeeds");
-    // FIXME: This test sometimes fails on Windows.
-    TEST_FALSE(runner, Folder_Exists(folder, foo),
-               "Dir is really gone");
-
-    DECREF(folder);
-    tear_down();
-}
-
-static void
-test_Rename(TestBatchRunner *runner, set_up_t set_up, tear_down_t tear_down) {
-    Folder *folder = set_up();
-    OutStream *outstream;
-    bool result;
-
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-    outstream = Folder_Open_Out(folder, boffo);
-    OutStream_Close(outstream);
-    DECREF(outstream);
-
-    // Move files.
-
-    result = Folder_Rename(folder, boffo, banana);
-    TEST_TRUE(runner, result, "Rename succeeds and returns true");
-    TEST_TRUE(runner, Folder_Exists(folder, banana),
-              "File exists at new path");
-    TEST_FALSE(runner, Folder_Exists(folder, boffo),
-               "File no longer exists at old path");
-
-    result = Folder_Rename(folder, banana, foo_bar_boffo);
-    TEST_TRUE(runner, result, "Rename to file in nested dir");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_bar_boffo),
-              "File exists at new path");
-    TEST_FALSE(runner, Folder_Exists(folder, banana),
-               "File no longer exists at old path");
-
-    result = Folder_Rename(folder, foo_bar_boffo, boffo);
-    TEST_TRUE(runner, result, "Rename from file in nested dir");
-    TEST_TRUE(runner, Folder_Exists(folder, boffo),
-              "File exists at new path");
-    TEST_FALSE(runner, Folder_Exists(folder, foo_bar_boffo),
-               "File no longer exists at old path");
-
-    outstream = Folder_Open_Out(folder, foo_boffo);
-    OutStream_Close(outstream);
-    DECREF(outstream);
-    result = Folder_Rename(folder, boffo, foo_boffo);
-    if (result) {
-        PASS(runner, "Rename clobbers on this system");
-        TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-                  "File exists at new path");
-        TEST_FALSE(runner, Folder_Exists(folder, boffo),
-                   "File no longer exists at old path");
-    }
-    else {
-        PASS(runner, "Rename does not clobber on this system");
-        TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-                  "File exists at new path");
-        TEST_TRUE(runner, Folder_Exists(folder, boffo),
-                  "File still exists at old path");
-        Folder_Delete(folder, boffo);
-    }
-
-    // Move Dirs.
-
-    Folder_MkDir(folder, baz);
-    result = Folder_Rename(folder, baz, boffo);
-    TEST_TRUE(runner, result, "Rename dir");
-    TEST_TRUE(runner, Folder_Exists(folder, boffo),
-              "Folder exists at new path");
-    TEST_FALSE(runner, Folder_Exists(folder, baz),
-               "Folder no longer exists at old path");
-
-    result = Folder_Rename(folder, boffo, foo_foo);
-    TEST_TRUE(runner, result, "Rename dir into nested subdir");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_foo),
-              "Folder exists at new path");
-    TEST_FALSE(runner, Folder_Exists(folder, boffo),
-               "Folder no longer exists at old path");
-
-    result = Folder_Rename(folder, foo_foo, foo_bar_baz);
-    TEST_TRUE(runner, result, "Rename dir from nested subdir");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_bar_baz),
-              "Folder exists at new path");
-    TEST_FALSE(runner, Folder_Exists(folder, foo_foo),
-               "Folder no longer exists at old path");
-
-    // Test failed clobbers.
-
-    Err_set_error(NULL);
-    result = Folder_Rename(folder, foo_boffo, foo_bar);
-    TEST_FALSE(runner, result, "Rename file clobbering dir fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Failed rename sets global error");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-              "File still exists at old path");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_bar),
-              "Dir still exists after failed clobber");
-
-    Err_set_error(NULL);
-    result = Folder_Rename(folder, foo_bar, foo_boffo);
-    TEST_FALSE(runner, result, "Rename dir clobbering file fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Failed rename sets global error");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_bar),
-              "Dir still exists at old path");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-              "File still exists after failed clobber");
-
-    // Test that "renaming" succeeds where to and from are the same.
-
-    result = Folder_Rename(folder, foo_boffo, foo_boffo);
-    TEST_TRUE(runner, result, "Renaming file to itself succeeds");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-              "File still exists");
-
-    result = Folder_Rename(folder, foo_bar, foo_bar);
-    // FIXME: This test sometimes fails on Windows with "Permission denied".
-    TEST_TRUE(runner, result, "Renaming dir to itself succeeds");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_bar),
-              "Dir still exists");
-
-    // Invalid filepaths.
-
-    Err_set_error(NULL);
-    result = Folder_Rename(folder, foo_boffo, nope_nyet);
-    TEST_FALSE(runner, result, "Rename into non-existent subdir fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Renaming into non-existent subdir sets global error");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-              "Entry still exists at old path");
-
-    Err_set_error(NULL);
-    result = Folder_Rename(folder, nope_nyet, boffo);
-    TEST_FALSE(runner, result, "Rename non-existent file fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Renaming non-existent source file sets global error");
-
-    Folder_Delete(folder, foo_bar_baz);
-    Folder_Delete(folder, foo_bar);
-    Folder_Delete(folder, foo_boffo);
-    Folder_Delete(folder, foo);
-    DECREF(folder);
-    tear_down();
-}
-
-static void
-test_Hard_Link(TestBatchRunner *runner, set_up_t set_up, tear_down_t tear_down) {
-    Folder *folder = set_up();
-    OutStream *outstream;
-    bool result;
-
-    Folder_MkDir(folder, foo);
-    Folder_MkDir(folder, foo_bar);
-    outstream = Folder_Open_Out(folder, boffo);
-    DECREF(outstream);
-
-    // Link files.
-
-    result = Folder_Hard_Link(folder, boffo, banana);
-    TEST_TRUE(runner, result, "Hard_Link succeeds and returns true");
-    TEST_TRUE(runner, Folder_Exists(folder, banana),
-              "File exists at new path");
-    TEST_TRUE(runner, Folder_Exists(folder, boffo),
-              "File still exists at old path");
-    Folder_Delete(folder, boffo);
-
-    result = Folder_Hard_Link(folder, banana, foo_bar_boffo);
-    TEST_TRUE(runner, result, "Hard_Link to target within nested dir");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_bar_boffo),
-              "File exists at new path");
-    TEST_TRUE(runner, Folder_Exists(folder, banana),
-              "File still exists at old path");
-    Folder_Delete(folder, banana);
-
-    result = Folder_Hard_Link(folder, foo_bar_boffo, foo_boffo);
-    TEST_TRUE(runner, result, "Hard_Link from file in nested dir");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-              "File exists at new path");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_bar_boffo),
-              "File still exists at old path");
-    Folder_Delete(folder, foo_bar_boffo);
-
-    // Invalid clobbers.
-
-    outstream = Folder_Open_Out(folder, boffo);
-    DECREF(outstream);
-    result = Folder_Hard_Link(folder, foo_boffo, boffo);
-    TEST_FALSE(runner, result, "Clobber of file fails");
-    TEST_TRUE(runner, Folder_Exists(folder, boffo),
-              "File still exists at new path");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-              "File still exists at old path");
-    Folder_Delete(folder, boffo);
-
-    Folder_MkDir(folder, baz);
-    result = Folder_Hard_Link(folder, foo_boffo, baz);
-    TEST_FALSE(runner, result, "Clobber of dir fails");
-    TEST_TRUE(runner, Folder_Exists(folder, baz),
-              "Dir still exists at new path");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-              "File still exists at old path");
-    Folder_Delete(folder, baz);
-
-    // Invalid Hard_Link of dir.
-
-    Folder_MkDir(folder, baz);
-    result = Folder_Hard_Link(folder, baz, banana);
-    TEST_FALSE(runner, result, "Hard_Link dir fails");
-    TEST_FALSE(runner, Folder_Exists(folder, banana),
-               "Nothing at new path");
-    // FIXME: This test sometimes fails on Windows.
-    TEST_TRUE(runner, Folder_Exists(folder, baz),
-              "Folder still exists at old path");
-    Folder_Delete(folder, baz);
-
-    // Test that linking to yourself fails.
-
-    result = Folder_Hard_Link(folder, foo_boffo, foo_boffo);
-    TEST_FALSE(runner, result, "Hard_Link file to itself fails");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-              "File still exists");
-
-    // Invalid filepaths.
-
-    Err_set_error(NULL);
-    result = Folder_Rename(folder, foo_boffo, nope_nyet);
-    TEST_FALSE(runner, result, "Hard_Link into non-existent subdir fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Hard_Link into non-existent subdir sets global error");
-    TEST_TRUE(runner, Folder_Exists(folder, foo_boffo),
-              "Entry still exists at old path");
-
-    Err_set_error(NULL);
-    result = Folder_Rename(folder, nope_nyet, boffo);
-    TEST_FALSE(runner, result, "Hard_Link non-existent source file fails");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Hard_Link non-existent source file sets global error");
-
-    Folder_Delete(folder, foo_bar);
-    Folder_Delete(folder, foo_boffo);
-    Folder_Delete(folder, foo);
-    DECREF(folder);
-    tear_down();
-}
-
-static void
-test_Close(TestBatchRunner *runner, set_up_t set_up, tear_down_t tear_down) {
-    Folder *folder = set_up();
-    Folder_Close(folder);
-    PASS(runner, "Close() concludes without incident");
-    Folder_Close(folder);
-    Folder_Close(folder);
-    PASS(runner, "Calling Close() multiple times is safe");
-    DECREF(folder);
-    tear_down();
-}
-
-uint32_t
-TestFolderCommon_num_tests() {
-    return 99;
-}
-
-void
-TestFolderCommon_run_tests(TestBatchRunner *runner, set_up_t set_up,
-                           tear_down_t tear_down) {
-    S_init_strings();
-    test_Local_Exists(runner, set_up, tear_down);
-    test_Local_Is_Directory(runner, set_up, tear_down);
-    test_Local_Find_Folder(runner, set_up, tear_down);
-    test_Local_MkDir(runner, set_up, tear_down);
-    test_Local_Open_Dir(runner, set_up, tear_down);
-    test_Local_Open_FileHandle(runner, set_up, tear_down);
-    test_Local_Delete(runner, set_up, tear_down);
-    test_Rename(runner, set_up, tear_down);
-    test_Hard_Link(runner, set_up, tear_down);
-    test_Close(runner, set_up, tear_down);
-    S_destroy_strings();
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestFolderCommon.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestFolderCommon.cfh b/core/Lucy/Test/Store/TestFolderCommon.cfh
deleted file mode 100644
index 75042f0..0000000
--- a/core/Lucy/Test/Store/TestFolderCommon.cfh
+++ /dev/null
@@ -1,40 +0,0 @@
-/* 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.
- */
-
-parcel TestLucy;
-
-__C__
-typedef lucy_Folder*
-LUCY_TestFolderCommon_Set_Up_t(void);
-typedef void
-LUCY_TestFolderCommon_Tear_Down_t(void);
-#ifdef LUCY_USE_SHORT_NAMES
-  #define TestFolderCommon_Set_Up_t    LUCY_TestFolderCommon_Set_Up_t
-  #define TestFolderCommon_Tear_Down_t LUCY_TestFolderCommon_Tear_Down_t
-#endif
-__END_C__
-
-inert class Lucy::Test::Store::TestFolderCommon {
-    inert uint32_t
-    num_tests();
-
-    inert void
-    run_tests(TestBatchRunner *runner,
-              LUCY_TestFolderCommon_Set_Up_t set_up,
-              LUCY_TestFolderCommon_Tear_Down_t tear_down);
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestIOChunks.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestIOChunks.c b/core/Lucy/Test/Store/TestIOChunks.c
deleted file mode 100644
index bf35d0b..0000000
--- a/core/Lucy/Test/Store/TestIOChunks.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* 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.
- */
-
-#define C_TESTLUCY_TESTINSTREAM
-#define C_LUCY_INSTREAM
-#define C_LUCY_FILEWINDOW
-#include <stdlib.h>
-#include <time.h>
-
-#include "charmony.h"
-
-#define TESTLUCY_USE_SHORT_NAMES
-#include "Lucy/Util/ToolSet.h"
-#include "Clownfish/TestHarness/TestBatchRunner.h"
-#include "Clownfish/TestHarness/TestUtils.h"
-#include "Lucy/Test.h"
-#include "Lucy/Test/TestUtils.h"
-#include "Lucy/Test/Store/TestIOChunks.h"
-#include "Lucy/Store/InStream.h"
-#include "Lucy/Store/OutStream.h"
-#include "Lucy/Store/RAMFile.h"
-#include "Lucy/Store/RAMFileHandle.h"
-
-TestIOChunks*
-TestIOChunks_new() {
-    return (TestIOChunks*)Class_Make_Obj(TESTIOCHUNKS);
-}
-
-static void
-test_Align(TestBatchRunner *runner) {
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-
-    for (int32_t i = 1; i < 32; i++) {
-        int64_t random_bytes = TestUtils_random_u64() % 32;
-        while (random_bytes--) { OutStream_Write_U8(outstream, 0); }
-        TEST_TRUE(runner, (OutStream_Align(outstream, i) % i) == 0,
-                  "Align to %ld", (long)i);
-    }
-    DECREF(file);
-    DECREF(outstream);
-}
-
-static void
-test_Read_Write_Bytes(TestBatchRunner *runner) {
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    char        buf[4];
-
-    OutStream_Write_Bytes(outstream, "foo", 4);
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    InStream_Read_Bytes(instream, buf, 4);
-    TEST_TRUE(runner, strcmp(buf, "foo") == 0, "Read_Bytes Write_Bytes");
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-}
-
-static void
-test_Buf(TestBatchRunner *runner) {
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    size_t      size      = IO_STREAM_BUF_SIZE * 2 + 5;
-    InStream   *instream;
-    const char *buf;
-
-    for (uint32_t i = 0; i < size; i++) {
-        OutStream_Write_U8(outstream, 'a');
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    InStreamIVARS *const ivars = InStream_IVARS(instream);
-    buf = InStream_Buf(instream, 5);
-    TEST_INT_EQ(runner, ivars->limit - buf, IO_STREAM_BUF_SIZE,
-                "Small request bumped up");
-
-    buf += IO_STREAM_BUF_SIZE - 10; // 10 bytes left in buffer.
-    InStream_Advance_Buf(instream, buf);
-
-    buf = InStream_Buf(instream, 10);
-    TEST_INT_EQ(runner, ivars->limit - buf, 10,
-                "Exact request doesn't trigger refill");
-
-    buf = InStream_Buf(instream, 11);
-    TEST_INT_EQ(runner, ivars->limit - buf, IO_STREAM_BUF_SIZE,
-                "Requesting over limit triggers refill");
-
-    int64_t     expected = InStream_Length(instream) - InStream_Tell(instream);
-    const char *buff     = InStream_Buf(instream, 100000);
-    int64_t     got      = CHY_PTR_TO_I64(ivars->limit) - CHY_PTR_TO_I64(buff);
-    TEST_TRUE(runner, got == expected,
-              "Requests greater than file size get pared down");
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-}
-
-void
-TestIOChunks_Run_IMP(TestIOChunks *self, TestBatchRunner *runner) {
-    TestBatchRunner_Plan(runner, (TestBatch*)self, 36);
-    srand((unsigned int)time((time_t*)NULL));
-    test_Align(runner);
-    test_Read_Write_Bytes(runner);
-    test_Buf(runner);
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestIOChunks.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestIOChunks.cfh b/core/Lucy/Test/Store/TestIOChunks.cfh
deleted file mode 100644
index 68c459a..0000000
--- a/core/Lucy/Test/Store/TestIOChunks.cfh
+++ /dev/null
@@ -1,31 +0,0 @@
-/* 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.
- */
-
-parcel TestLucy;
-
-/** Tests reading and writing of composite types using InStream/OutStream.
- */
-class Lucy::Test::Store::TestIOChunks
-    inherits Clownfish::TestHarness::TestBatch {
-
-    inert incremented TestIOChunks*
-    new();
-
-    void
-    Run(TestIOChunks *self, TestBatchRunner *runner);
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestIOPrimitives.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestIOPrimitives.c b/core/Lucy/Test/Store/TestIOPrimitives.c
deleted file mode 100644
index e7d32f2..0000000
--- a/core/Lucy/Test/Store/TestIOPrimitives.c
+++ /dev/null
@@ -1,518 +0,0 @@
-/* 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.
- */
-
-#define C_TESTLUCY_TESTINSTREAM
-#define C_LUCY_INSTREAM
-#define C_LUCY_FILEWINDOW
-#include <stdlib.h>
-#include <time.h>
-
-#include "charmony.h"
-
-#define TESTLUCY_USE_SHORT_NAMES
-#include "Lucy/Util/ToolSet.h"
-#include "Clownfish/TestHarness/TestBatchRunner.h"
-#include "Clownfish/TestHarness/TestUtils.h"
-#include "Lucy/Test.h"
-#include "Lucy/Test/TestUtils.h"
-#include "Lucy/Test/Store/TestIOPrimitives.h"
-#include "Lucy/Store/InStream.h"
-#include "Lucy/Store/OutStream.h"
-#include "Lucy/Store/RAMFile.h"
-#include "Lucy/Store/RAMFileHandle.h"
-#include "Lucy/Util/NumberUtils.h"
-
-TestIOPrimitives*
-TestIOPrimitives_new() {
-    return (TestIOPrimitives*)Class_Make_Obj(TESTIOPRIMITIVES);
-}
-
-static void
-test_i8(TestBatchRunner *runner) {
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    int i;
-
-    for (i = -128; i < 128; i++) {
-        OutStream_Write_I8(outstream, (int8_t)i);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = -128; i < 128; i++) {
-        if (InStream_Read_I8(instream) != i) { break; }
-    }
-    TEST_INT_EQ(runner, i, 128, "round trip i8 successful for %d out of 256",
-                i + 128);
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-}
-
-static void
-test_u8(TestBatchRunner *runner) {
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    int i;
-
-    for (i = 0; i < 256; i++) {
-        OutStream_Write_U8(outstream, (uint8_t)i);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 256; i++) {
-        if (InStream_Read_U8(instream) != i) { break; }
-    }
-    TEST_INT_EQ(runner, i, 256,
-                "round trip u8 successful for %d out of 256", i);
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-}
-
-static void
-test_i32(TestBatchRunner *runner) {
-    int64_t    *ints = TestUtils_random_i64s(NULL, 1000, INT32_MIN, INT32_MAX);
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    uint32_t i;
-
-    // Test boundaries.
-    ints[0] = INT32_MIN;
-    ints[1] = INT32_MIN + 1;
-    ints[2] = INT32_MAX;
-    ints[3] = INT32_MAX - 1;
-
-    for (i = 0; i < 1000; i++) {
-        OutStream_Write_I32(outstream, (int32_t)ints[i]);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 1000; i++) {
-        int32_t got = InStream_Read_I32(instream);
-        if (got != ints[i]) {
-            FAIL(runner, "i32 round trip failed: %ld, %ld", (long)got,
-                 (long)ints[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "i32 round trip");
-    }
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-    FREEMEM(ints);
-}
-
-static void
-test_u32(TestBatchRunner *runner) {
-    uint64_t   *ints = TestUtils_random_u64s(NULL, 1000, 0, UINT32_MAX);
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    uint32_t i;
-
-    // Test boundaries.
-    ints[0] = 0;
-    ints[1] = 1;
-    ints[2] = UINT32_MAX;
-    ints[3] = UINT32_MAX - 1;
-
-    for (i = 0; i < 1000; i++) {
-        OutStream_Write_U32(outstream, (uint32_t)ints[i]);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 1000; i++) {
-        uint32_t got = InStream_Read_U32(instream);
-        if (got != ints[i]) {
-            FAIL(runner, "u32 round trip failed: %lu, %lu", (unsigned long)got,
-                 (unsigned long)ints[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "u32 round trip");
-    }
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-    FREEMEM(ints);
-}
-
-static void
-test_i64(TestBatchRunner *runner) {
-    int64_t    *ints = TestUtils_random_i64s(NULL, 1000, INT64_MIN, INT64_MAX);
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    uint32_t i;
-
-    // Test boundaries.
-    ints[0] = INT64_MIN;
-    ints[1] = INT64_MIN + 1;
-    ints[2] = INT64_MAX;
-    ints[3] = INT64_MAX - 1;
-
-    for (i = 0; i < 1000; i++) {
-        OutStream_Write_I64(outstream, ints[i]);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 1000; i++) {
-        int64_t got = InStream_Read_I64(instream);
-        if (got != ints[i]) {
-            FAIL(runner, "i64 round trip failed: %" PRId64 ", %" PRId64,
-                 got, ints[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "i64 round trip");
-    }
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-    FREEMEM(ints);
-}
-
-
-static void
-test_u64(TestBatchRunner *runner) {
-    uint64_t   *ints = TestUtils_random_u64s(NULL, 1000, 0, UINT64_MAX);
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    uint32_t i;
-
-    // Test boundaries.
-    ints[0] = 0;
-    ints[1] = 1;
-    ints[2] = UINT64_MAX;
-    ints[3] = UINT64_MAX - 1;
-
-    for (i = 0; i < 1000; i++) {
-        OutStream_Write_U64(outstream, ints[i]);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 1000; i++) {
-        uint64_t got = InStream_Read_U64(instream);
-        if (got != ints[i]) {
-            FAIL(runner, "u64 round trip failed: %" PRIu64 ", %" PRIu64,
-                 got, ints[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "u64 round trip");
-    }
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-    FREEMEM(ints);
-}
-
-static void
-test_ci32(TestBatchRunner *runner) {
-    int64_t *ints = TestUtils_random_i64s(NULL, 1000, INT32_MIN, INT32_MAX);
-    RAMFile *file = RAMFile_new(NULL, false);
-    OutStream *outstream = OutStream_open((Obj*)file);
-    InStream *instream;
-    size_t i;
-
-    // Test boundaries.
-    ints[0] = 0;
-    ints[1] = 1;
-    ints[2] = -1;
-    ints[3] = INT32_MAX;
-    ints[4] = INT32_MIN;
-
-    for (i = 0; i < 1000; i++) {
-        OutStream_Write_CI32(outstream, (int32_t)ints[i]);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 1000; i++) {
-        int32_t got = InStream_Read_CI32(instream);
-        if ((int64_t)got != ints[i]) {
-            FAIL(runner, "ci32 round trip failed: %" PRId64 ", %" PRId64,
-                 (int64_t)got, ints[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "ci32 round trip");
-    }
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-    FREEMEM(ints);
-}
-
-static void
-test_cu32(TestBatchRunner *runner) {
-    uint64_t   *ints = TestUtils_random_u64s(NULL, 1000, 0, UINT32_MAX);
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    uint32_t i;
-
-    // Test boundaries.
-    ints[0] = 0;
-    ints[1] = 1;
-    ints[2] = UINT32_MAX;
-    ints[3] = UINT32_MAX - 1;
-
-    for (i = 0; i < 1000; i++) {
-        OutStream_Write_CU32(outstream, (uint32_t)ints[i]);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 1000; i++) {
-        uint32_t got = InStream_Read_CU32(instream);
-        if (got != ints[i]) {
-            FAIL(runner, "cu32 round trip failed: %lu, %lu", (unsigned long)got,
-                 (unsigned long)ints[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "cu32 round trip");
-    }
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-    FREEMEM(ints);
-}
-
-static void
-test_ci64(TestBatchRunner *runner) {
-    int64_t *ints = TestUtils_random_i64s(NULL, 1000, INT64_MIN, INT64_MAX);
-    RAMFile *file = RAMFile_new(NULL, false);
-    OutStream *outstream = OutStream_open((Obj*)file);
-    InStream *instream;
-    uint32_t i;
-
-    // Test boundaries.
-    ints[0] = 0;
-    ints[1] = 1;
-    ints[2] = -1;
-    ints[3] = INT64_MAX;
-    ints[4] = INT64_MIN;
-
-    for (i = 0; i < 1000; i++) {
-        OutStream_Write_CI64(outstream, ints[i]);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 1000; i++) {
-        int64_t got = InStream_Read_CI64(instream);
-        if (got != ints[i]) {
-            FAIL(runner, "ci64 round trip failed: %" PRId64 ", %" PRId64,
-                 got, ints[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "ci64 round trip");
-    }
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-    FREEMEM(ints);
-}
-
-static void
-test_cu64(TestBatchRunner *runner) {
-    uint64_t   *ints   = TestUtils_random_u64s(NULL, 1000, 0, UINT64_MAX);
-    RAMFile    *file     = RAMFile_new(NULL, false);
-    RAMFile    *raw_file = RAMFile_new(NULL, false);
-    OutStream  *outstream     = OutStream_open((Obj*)file);
-    OutStream  *raw_outstream = OutStream_open((Obj*)raw_file);
-    InStream   *instream;
-    InStream   *raw_instream;
-    uint32_t i;
-
-    // Test boundaries.
-    ints[0] = 0;
-    ints[1] = 1;
-    ints[2] = UINT64_MAX;
-    ints[3] = UINT64_MAX - 1;
-
-    for (i = 0; i < 1000; i++) {
-        OutStream_Write_CU64(outstream, ints[i]);
-        OutStream_Write_CU64(raw_outstream, ints[i]);
-    }
-    OutStream_Close(outstream);
-    OutStream_Close(raw_outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 1000; i++) {
-        uint64_t got = InStream_Read_CU64(instream);
-        if (got != ints[i]) {
-            FAIL(runner, "cu64 round trip failed: %" PRIu64 ", %" PRIu64,
-                 got, ints[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "cu64 round trip");
-    }
-
-    raw_instream = InStream_open((Obj*)raw_file);
-    for (i = 0; i < 1000; i++) {
-        char  buffer[10];
-        const char *buf = buffer;
-        int size = InStream_Read_Raw_C64(raw_instream, buffer);
-        uint64_t got = NumUtil_decode_cu64(&buf);
-        UNUSED_VAR(size);
-        if (got != ints[i]) {
-            FAIL(runner, "Read_Raw_C64 failed: %" PRIu64 ", %" PRIu64,
-                 got, ints[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "Read_Raw_C64");
-    }
-
-    DECREF(raw_instream);
-    DECREF(instream);
-    DECREF(raw_outstream);
-    DECREF(outstream);
-    DECREF(raw_file);
-    DECREF(file);
-    FREEMEM(ints);
-}
-
-static void
-test_f32(TestBatchRunner *runner) {
-    double     *f64s   = TestUtils_random_f64s(NULL, 1000);
-    float      *values = (float*)MALLOCATE(1000 * sizeof(float));
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    uint32_t i;
-
-    // Truncate.
-    for (i = 0; i < 1000; i++) {
-        values[i] = (float)f64s[i];
-    }
-
-    // Test boundaries.
-    values[0] = 0.0f;
-    values[1] = 1.0f;
-
-    for (i = 0; i < 1000; i++) {
-        OutStream_Write_F32(outstream, values[i]);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 1000; i++) {
-        float got = InStream_Read_F32(instream);
-        if (got != values[i]) {
-            FAIL(runner, "f32 round trip failed: %f, %f", got, values[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "f32 round trip");
-    }
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-    FREEMEM(values);
-    FREEMEM(f64s);
-}
-
-static void
-test_f64(TestBatchRunner *runner) {
-    double     *values = TestUtils_random_f64s(NULL, 1000);
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    uint32_t i;
-
-    // Test boundaries.
-    values[0] = 0.0;
-    values[1] = 1.0;
-
-    for (i = 0; i < 1000; i++) {
-        OutStream_Write_F64(outstream, values[i]);
-    }
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    for (i = 0; i < 1000; i++) {
-        double got = InStream_Read_F64(instream);
-        if (got != values[i]) {
-            FAIL(runner, "f64 round trip failed: %f, %f", got, values[i]);
-            break;
-        }
-    }
-    if (i == 1000) {
-        PASS(runner, "f64 round trip");
-    }
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-    FREEMEM(values);
-}
-
-void
-TestIOPrimitives_Run_IMP(TestIOPrimitives *self, TestBatchRunner *runner) {
-    TestBatchRunner_Plan(runner, (TestBatch*)self, 13);
-    srand((unsigned int)time((time_t*)NULL));
-    test_i8(runner);
-    test_u8(runner);
-    test_i32(runner);
-    test_u32(runner);
-    test_i64(runner);
-    test_u64(runner);
-    test_ci32(runner);
-    test_cu32(runner);
-    test_ci64(runner);
-    test_cu64(runner);
-    test_f32(runner);
-    test_f64(runner);
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestIOPrimitives.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestIOPrimitives.cfh b/core/Lucy/Test/Store/TestIOPrimitives.cfh
deleted file mode 100644
index c75419a..0000000
--- a/core/Lucy/Test/Store/TestIOPrimitives.cfh
+++ /dev/null
@@ -1,31 +0,0 @@
-/* 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.
- */
-
-parcel TestLucy;
-
-/** Tests reading and writing of primitive types using InStream/OutStream.
- */
-class Lucy::Test::Store::TestIOPrimitives
-    inherits Clownfish::TestHarness::TestBatch {
-
-    inert incremented TestIOPrimitives*
-    new();
-
-    void
-    Run(TestIOPrimitives *self, TestBatchRunner *runner);
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestInStream.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestInStream.c b/core/Lucy/Test/Store/TestInStream.c
deleted file mode 100644
index c32f985..0000000
--- a/core/Lucy/Test/Store/TestInStream.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/* 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.
- */
-
-#define C_TESTLUCY_TESTINSTREAM
-#define C_LUCY_INSTREAM
-#define C_LUCY_FILEWINDOW
-
-#define TESTLUCY_USE_SHORT_NAMES
-#include "Lucy/Util/ToolSet.h"
-#include "Clownfish/TestHarness/TestBatchRunner.h"
-#include "Lucy/Test.h"
-#include "Lucy/Test/TestUtils.h"
-#include "Lucy/Test/Store/TestInStream.h"
-#include "Lucy/Test/Store/MockFileHandle.h"
-#include "Lucy/Store/FileWindow.h"
-#include "Lucy/Store/InStream.h"
-#include "Lucy/Store/OutStream.h"
-#include "Lucy/Store/RAMFile.h"
-#include "Lucy/Store/RAMFileHandle.h"
-
-TestInStream*
-TestInStream_new() {
-    return (TestInStream*)Class_Make_Obj(TESTINSTREAM);
-}
-
-static void
-test_refill(TestBatchRunner *runner) {
-    RAMFile    *file      = RAMFile_new(NULL, false);
-    OutStream  *outstream = OutStream_open((Obj*)file);
-    InStream   *instream;
-    char        scratch[5];
-    InStreamIVARS *ivars;
-
-    for (int32_t i = 0; i < 1023; i++) {
-        OutStream_Write_U8(outstream, 'x');
-    }
-    OutStream_Write_U8(outstream, 'y');
-    OutStream_Write_U8(outstream, 'z');
-    OutStream_Close(outstream);
-
-    instream = InStream_open((Obj*)file);
-    ivars = InStream_IVARS(instream);
-    InStream_Refill(instream);
-    TEST_INT_EQ(runner, ivars->limit - ivars->buf, IO_STREAM_BUF_SIZE,
-                "Refill");
-    TEST_INT_EQ(runner, (long)InStream_Tell(instream), 0,
-                "Correct file pos after standing-start Refill()");
-    DECREF(instream);
-
-    instream = InStream_open((Obj*)file);
-    ivars = InStream_IVARS(instream);
-    InStream_Fill(instream, 30);
-    TEST_INT_EQ(runner, ivars->limit - ivars->buf, 30, "Fill()");
-    TEST_INT_EQ(runner, (long)InStream_Tell(instream), 0,
-                "Correct file pos after standing-start Fill()");
-    DECREF(instream);
-
-    instream = InStream_open((Obj*)file);
-    ivars = InStream_IVARS(instream);
-    InStream_Read_Bytes(instream, scratch, 5);
-    TEST_INT_EQ(runner, ivars->limit - ivars->buf,
-                IO_STREAM_BUF_SIZE - 5, "small read triggers refill");
-    DECREF(instream);
-
-    instream = InStream_open((Obj*)file);
-    ivars = InStream_IVARS(instream);
-    TEST_INT_EQ(runner, InStream_Read_U8(instream), 'x', "Read_U8");
-    InStream_Seek(instream, 1023);
-    TEST_INT_EQ(runner, (long)FileWindow_IVARS(ivars->window)->offset, 0,
-                "no unnecessary refill on Seek");
-    TEST_INT_EQ(runner, (long)InStream_Tell(instream), 1023, "Seek/Tell");
-    TEST_INT_EQ(runner, InStream_Read_U8(instream), 'y',
-                "correct data after in-buffer Seek()");
-    TEST_INT_EQ(runner, InStream_Read_U8(instream), 'z', "automatic Refill");
-    TEST_TRUE(runner, (FileWindow_IVARS(ivars->window)->offset != 0),
-              "refilled");
-
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(file);
-}
-
-static void
-test_Clone_and_Reopen(TestBatchRunner *runner) {
-    String        *foo       = SSTR_WRAP_C("foo");
-    String        *bar       = SSTR_WRAP_C("bar");
-    RAMFile       *file      = RAMFile_new(NULL, false);
-    OutStream     *outstream = OutStream_open((Obj*)file);
-    RAMFileHandle *fh;
-    InStream      *instream;
-    InStream      *clone;
-    InStream      *reopened;
-
-    for (uint8_t i = 0; i < 26; i++) {
-        OutStream_Write_U8(outstream, 'a' + i);
-    }
-    OutStream_Close(outstream);
-
-    fh = RAMFH_open(foo, FH_READ_ONLY, file);
-    instream = InStream_open((Obj*)fh);
-    InStream_Seek(instream, 1);
-    TEST_TRUE(runner, Str_Equals(InStream_Get_Filename(instream), (Obj*)foo),
-              "Get_Filename");
-
-    clone    = InStream_Clone(instream);
-    TEST_TRUE(runner, Str_Equals(InStream_Get_Filename(clone), (Obj*)foo),
-              "Clones have same filename");
-    TEST_TRUE(runner, InStream_Length(instream) == InStream_Length(clone),
-              "Clones have same length");
-    TEST_TRUE(runner, InStream_Read_U8(instream) == InStream_Read_U8(clone),
-              "Clones start at same file position");
-
-    reopened = InStream_Reopen(instream, bar, 25, 1);
-    TEST_TRUE(runner, Str_Equals(InStream_Get_Filename(reopened), (Obj*)bar),
-              "Reopened InStreams take new filename");
-    TEST_TRUE(runner, InStream_Read_U8(reopened) == 'z',
-              "Reopened stream starts at supplied offset");
-    TEST_TRUE(runner, InStream_Length(reopened) == 1,
-              "Reopened stream uses supplied length");
-    TEST_TRUE(runner, InStream_Tell(reopened) == 1,
-              "Tell() uses supplied offset for reopened stream");
-    InStream_Seek(reopened, 0);
-    TEST_TRUE(runner, InStream_Read_U8(reopened) == 'z',
-              "Seek() uses supplied offset for reopened stream");
-
-    DECREF(reopened);
-    DECREF(clone);
-    DECREF(instream);
-    DECREF(outstream);
-    DECREF(fh);
-    DECREF(file);
-}
-
-static void
-test_Close(TestBatchRunner *runner) {
-    RAMFile  *file     = RAMFile_new(NULL, false);
-    InStream *instream = InStream_open((Obj*)file);
-    InStream_Close(instream);
-    TEST_TRUE(runner, InStream_IVARS(instream)->file_handle == NULL,
-              "Close decrements FileHandle's refcount");
-    DECREF(instream);
-    DECREF(file);
-}
-
-static void
-test_Seek_and_Tell(TestBatchRunner *runner) {
-    int64_t     gb1      = INT64_C(0x40000000);
-    int64_t     gb3      = gb1 * 3;
-    int64_t     gb6      = gb1 * 6;
-    int64_t     gb12     = gb1 * 12;
-    FileHandle *fh       = (FileHandle*)MockFileHandle_new(NULL, gb12);
-    InStream   *instream = InStream_open((Obj*)fh);
-    InStreamIVARS *const ivars = InStream_IVARS(instream);
-
-    InStream_Buf(instream, 10000);
-    TEST_TRUE(runner, ivars->limit == ((char*)NULL) + 10000,
-              "InStream_Buf sets limit");
-
-    InStream_Seek(instream, gb6);
-    TEST_TRUE(runner, InStream_Tell(instream) == gb6,
-              "Tell after seek forwards outside buffer");
-    TEST_TRUE(runner, ivars->buf == NULL,
-              "Seek forwards outside buffer sets buf to NULL");
-    TEST_TRUE(runner, ivars->limit == NULL,
-              "Seek forwards outside buffer sets limit to NULL");
-    TEST_TRUE(runner, FileWindow_IVARS(ivars->window)->offset == gb6,
-              "Seek forwards outside buffer tracks pos in window offset");
-
-    InStream_Buf(instream, (size_t)gb1);
-    TEST_TRUE(runner, ivars->limit == ((char*)NULL) + gb1,
-              "InStream_Buf sets limit");
-
-    InStream_Seek(instream, gb6 + 10);
-    TEST_TRUE(runner, InStream_Tell(instream) == gb6 + 10,
-              "Tell after seek forwards within buffer");
-    TEST_TRUE(runner, ivars->buf == ((char*)NULL) + 10,
-              "Seek within buffer sets buf");
-    TEST_TRUE(runner, ivars->limit == ((char*)NULL) + gb1,
-              "Seek within buffer leaves limit alone");
-
-    InStream_Seek(instream, gb6 + 1);
-    TEST_TRUE(runner, InStream_Tell(instream) == gb6 + 1,
-              "Tell after seek backwards within buffer");
-    TEST_TRUE(runner, ivars->buf == ((char*)NULL) + 1,
-              "Seek backwards within buffer sets buf");
-    TEST_TRUE(runner, ivars->limit == ((char*)NULL) + gb1,
-              "Seek backwards within buffer leaves limit alone");
-
-    InStream_Seek(instream, gb3);
-    TEST_TRUE(runner, InStream_Tell(instream) == gb3,
-              "Tell after seek backwards outside buffer");
-    TEST_TRUE(runner, ivars->buf == NULL,
-              "Seek backwards outside buffer sets buf to NULL");
-    TEST_TRUE(runner, ivars->limit == NULL,
-              "Seek backwards outside buffer sets limit to NULL");
-    TEST_TRUE(runner, FileWindow_IVARS(ivars->window)->offset == gb3,
-              "Seek backwards outside buffer tracks pos in window offset");
-
-    DECREF(instream);
-    DECREF(fh);
-}
-
-void
-TestInStream_Run_IMP(TestInStream *self, TestBatchRunner *runner) {
-    TestBatchRunner_Plan(runner, (TestBatch*)self, 37);
-    test_refill(runner);
-    test_Clone_and_Reopen(runner);
-    test_Close(runner);
-    test_Seek_and_Tell(runner);
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestInStream.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestInStream.cfh b/core/Lucy/Test/Store/TestInStream.cfh
deleted file mode 100644
index b216fcd..0000000
--- a/core/Lucy/Test/Store/TestInStream.cfh
+++ /dev/null
@@ -1,33 +0,0 @@
-/* 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.
- */
-
-parcel TestLucy;
-
-/** Tests for basic functionality of InStream using both memory-mapped and
- * streamed sources.
- */
-
-class Lucy::Test::Store::TestInStream
-    inherits Clownfish::TestHarness::TestBatch {
-
-    inert incremented TestInStream*
-    new();
-
-    void
-    Run(TestInStream *self, TestBatchRunner *runner);
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestRAMDirHandle.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestRAMDirHandle.c b/core/Lucy/Test/Store/TestRAMDirHandle.c
deleted file mode 100644
index fc6292a..0000000
--- a/core/Lucy/Test/Store/TestRAMDirHandle.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* 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.
- */
-
-#define C_LUCY_RAMFOLDER
-#define TESTLUCY_USE_SHORT_NAMES
-#include "Lucy/Util/ToolSet.h"
-
-#include "Clownfish/TestHarness/TestBatchRunner.h"
-#include "Lucy/Test.h"
-#include "Lucy/Test/Store/TestRAMDirHandle.h"
-#include "Lucy/Store/FileHandle.h"
-#include "Lucy/Store/RAMFolder.h"
-#include "Lucy/Store/RAMDirHandle.h"
-
-TestRAMDirHandle*
-TestRAMDH_new() {
-    return (TestRAMDirHandle*)Class_Make_Obj(TESTRAMDIRHANDLE);
-}
-
-static void
-test_all(TestBatchRunner *runner) {
-    RAMFolder *folder        = RAMFolder_new(NULL);
-    String    *foo           = SSTR_WRAP_C("foo");
-    String    *boffo         = SSTR_WRAP_C("boffo");
-    String    *foo_boffo     = SSTR_WRAP_C("foo/boffo");
-    bool       saw_foo       = false;
-    bool       saw_boffo     = false;
-    bool       foo_was_dir   = false;
-    bool       boffo_was_dir = false;
-    int        count         = 0;
-
-    // Set up folder contents.
-    RAMFolder_MkDir(folder, foo);
-    FileHandle *fh = RAMFolder_Open_FileHandle(folder, boffo,
-                                               FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-    fh = RAMFolder_Open_FileHandle(folder, foo_boffo,
-                                   FH_CREATE | FH_WRITE_ONLY);
-    DECREF(fh);
-
-    RAMDirHandle *dh = RAMDH_new(folder);
-    while (RAMDH_Next(dh)) {
-        count++;
-        String *entry = RAMDH_Get_Entry(dh);
-        if (Str_Equals(entry, (Obj*)foo)) {
-            saw_foo = true;
-            foo_was_dir = RAMDH_Entry_Is_Dir(dh);
-        }
-        else if (Str_Equals(entry, (Obj*)boffo)) {
-            saw_boffo = true;
-            boffo_was_dir = RAMDH_Entry_Is_Dir(dh);
-        }
-        DECREF(entry);
-    }
-    TEST_INT_EQ(runner, 2, count, "correct number of entries");
-    TEST_TRUE(runner, saw_foo, "Directory was iterated over");
-    TEST_TRUE(runner, foo_was_dir,
-              "Dir correctly identified by Entry_Is_Dir");
-    TEST_TRUE(runner, saw_boffo, "File was iterated over");
-    TEST_FALSE(runner, boffo_was_dir,
-               "File correctly identified by Entry_Is_Dir");
-
-    uint32_t refcount = REFCOUNT_NN(folder);
-    RAMDH_Close(dh);
-    TEST_INT_EQ(runner, REFCOUNT_NN(folder), refcount - 1,
-                "Folder reference released by Close()");
-
-    DECREF(dh);
-    DECREF(folder);
-}
-
-void
-TestRAMDH_Run_IMP(TestRAMDirHandle *self, TestBatchRunner *runner) {
-    TestBatchRunner_Plan(runner, (TestBatch*)self, 6);
-    test_all(runner);
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestRAMDirHandle.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestRAMDirHandle.cfh b/core/Lucy/Test/Store/TestRAMDirHandle.cfh
deleted file mode 100644
index 4adfb31..0000000
--- a/core/Lucy/Test/Store/TestRAMDirHandle.cfh
+++ /dev/null
@@ -1,29 +0,0 @@
-/* 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.
- */
-
-parcel TestLucy;
-
-class Lucy::Test::Store::TestRAMDirHandle nickname TestRAMDH
-    inherits Clownfish::TestHarness::TestBatch {
-
-    inert incremented TestRAMDirHandle*
-    new();
-
-    void
-    Run(TestRAMDirHandle *self, TestBatchRunner *runner);
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/572d3564/core/Lucy/Test/Store/TestRAMFileHandle.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Store/TestRAMFileHandle.c b/core/Lucy/Test/Store/TestRAMFileHandle.c
deleted file mode 100644
index e208784..0000000
--- a/core/Lucy/Test/Store/TestRAMFileHandle.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* 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.
- */
-
-#include <string.h>
-
-#define C_TESTLUCY_TESTINSTREAM
-#define C_LUCY_INSTREAM
-#define C_LUCY_FILEWINDOW
-#define TESTLUCY_USE_SHORT_NAMES
-#include "Lucy/Util/ToolSet.h"
-
-#include "Clownfish/TestHarness/TestBatchRunner.h"
-#include "Lucy/Test.h"
-#include "Lucy/Test/Store/TestRAMFileHandle.h"
-#include "Lucy/Store/RAMFileHandle.h"
-#include "Lucy/Store/FileWindow.h"
-#include "Lucy/Store/RAMFile.h"
-
-TestRAMFileHandle*
-TestRAMFH_new() {
-    return (TestRAMFileHandle*)Class_Make_Obj(TESTRAMFILEHANDLE);
-}
-
-static void
-test_open(TestBatchRunner *runner) {
-    RAMFileHandle *fh;
-
-    Err_set_error(NULL);
-    fh = RAMFH_open(NULL, FH_WRITE_ONLY, NULL);
-    TEST_TRUE(runner, fh == NULL,
-              "open() without a RAMFile or FH_CREATE returns NULL");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "open() without a RAMFile or FH_CREATE sets error");
-}
-
-static void
-test_Read_Write(TestBatchRunner *runner) {
-    RAMFile *file = RAMFile_new(NULL, false);
-    RAMFileHandle *fh = RAMFH_open(NULL, FH_WRITE_ONLY, file);
-    const char *foo = "foo";
-    const char *bar = "bar";
-    char buffer[12];
-    char *buf = buffer;
-
-    TEST_TRUE(runner, Str_Equals_Utf8(RAMFH_Get_Path(fh), "", 0),
-              "NULL arg as filepath yields empty string");
-
-    TEST_TRUE(runner, RAMFH_Write(fh, foo, 3), "Write returns success");
-    TEST_TRUE(runner, RAMFH_Length(fh) == 3, "Length after one Write");
-    TEST_TRUE(runner, RAMFH_Write(fh, bar, 3), "Write returns success");
-    TEST_TRUE(runner, RAMFH_Length(fh) == 6, "Length after two Writes");
-
-    Err_set_error(NULL);
-    TEST_FALSE(runner, RAMFH_Read(fh, buf, 0, 2),
-               "Reading from a write-only handle returns false");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Reading from a write-only handle sets error");
-
-    // Reopen for reading.
-    DECREF(fh);
-    fh = RAMFH_open(NULL, FH_READ_ONLY, file);
-    TEST_TRUE(runner, RAMFile_Read_Only(file),
-              "FH_READ_ONLY propagates to RAMFile's read_only property");
-
-    TEST_TRUE(runner, RAMFH_Read(fh, buf, 0, 6), "Read returns success");
-    TEST_TRUE(runner, strncmp(buf, "foobar", 6) == 0, "Read/Write");
-    TEST_TRUE(runner, RAMFH_Read(fh, buf, 2, 3), "Read returns success");
-    TEST_TRUE(runner, strncmp(buf, "oba", 3) == 0, "Read with offset");
-
-    Err_set_error(NULL);
-    TEST_FALSE(runner, RAMFH_Read(fh, buf, -1, 4),
-               "Read() with a negative offset returns false");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Read() with a negative offset sets error");
-
-    Err_set_error(NULL);
-    TEST_FALSE(runner, RAMFH_Read(fh, buf, 6, 1),
-               "Read() past EOF returns false");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Read() past EOF sets error");
-
-    Err_set_error(NULL);
-    TEST_FALSE(runner, RAMFH_Write(fh, foo, 3),
-               "Writing to a read-only handle returns false");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Writing to a read-only handle sets error");
-
-    DECREF(fh);
-    DECREF(file);
-}
-
-static void
-test_Grow_and_Get_File(TestBatchRunner *runner) {
-    RAMFileHandle *fh = RAMFH_open(NULL, FH_WRITE_ONLY | FH_CREATE, NULL);
-    RAMFile *ram_file = RAMFH_Get_File(fh);
-    ByteBuf *contents = RAMFile_Get_Contents(ram_file);
-
-    RAMFH_Grow(fh, 100);
-    TEST_TRUE(runner, BB_Get_Capacity(contents) >= 100, "Grow");
-
-    DECREF(fh);
-}
-
-static void
-test_Close(TestBatchRunner *runner) {
-    RAMFileHandle *fh = RAMFH_open(NULL, FH_WRITE_ONLY | FH_CREATE, NULL);
-    TEST_TRUE(runner, RAMFH_Close(fh), "Close returns true");
-    DECREF(fh);
-}
-
-static void
-test_Window(TestBatchRunner *runner) {
-    RAMFile *file = RAMFile_new(NULL, false);
-    RAMFileHandle *fh = RAMFH_open(NULL, FH_WRITE_ONLY, file);
-    FileWindow *window = FileWindow_new();
-    FileWindowIVARS *const window_ivars = FileWindow_IVARS(window);
-
-    for (uint32_t i = 0; i < 1024; i++) {
-        RAMFH_Write(fh, "foo ", 4);
-    }
-    RAMFH_Close(fh);
-
-    // Reopen for reading.
-    DECREF(fh);
-    fh = RAMFH_open(NULL, FH_READ_ONLY, file);
-
-    Err_set_error(NULL);
-    TEST_FALSE(runner, RAMFH_Window(fh, window, -1, 4),
-               "Window() with a negative offset returns false");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Window() with a negative offset sets error");
-
-    Err_set_error(NULL);
-    TEST_FALSE(runner, RAMFH_Window(fh, window, 4000, 1000),
-               "Window() past EOF returns false");
-    TEST_TRUE(runner, Err_get_error() != NULL,
-              "Window() past EOF sets error");
-
-    TEST_TRUE(runner, RAMFH_Window(fh, window, 1021, 2),
-              "Window() returns true");
-    TEST_TRUE(runner, strncmp(window_ivars->buf, "oo", 2) == 0, "Window()");
-
-    TEST_TRUE(runner, RAMFH_Release_Window(fh, window),
-              "Release_Window() returns true");
-    TEST_TRUE(runner, window_ivars->buf == NULL, "Release_Window() resets buf");
-    TEST_TRUE(runner, window_ivars->offset == 0, "Release_Window() resets offset");
-    TEST_TRUE(runner, window_ivars->len == 0, "Release_Window() resets len");
-
-    DECREF(window);
-    DECREF(fh);
-    DECREF(file);
-}
-
-void
-TestRAMFH_Run_IMP(TestRAMFileHandle *self, TestBatchRunner *runner) {
-    TestBatchRunner_Plan(runner, (TestBatch*)self, 32);
-    test_open(runner);
-    test_Read_Write(runner);
-    test_Grow_and_Get_File(runner);
-    test_Close(runner);
-    test_Window(runner);
-}
-
-