Add checksums (used as a timestamp) to VFS.
Deprecate mj_makeEmptyFileVFS in favor of mj_addBufferVFS. PiperOrigin-RevId: 608915388 Change-Id: Id9e9b042799bc1bf547f0795ae6f386447d53cdd
This commit is contained in:
committed by
Copybara-Service
parent
042760eba8
commit
a4a621f6e3
@@ -247,7 +247,6 @@ TEST_F(Base64Test, mju_encodeBase64) {
|
||||
EXPECT_THAT(buffer.data(), StrEq("D4a+//A="));
|
||||
EXPECT_THAT(n, std::strlen(buffer.data()) + 1);
|
||||
EXPECT_THAT(n, buffer.size());
|
||||
|
||||
}
|
||||
|
||||
TEST_F(Base64Test, mju_encodeBase64_align0) {
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include <array>
|
||||
#include <cstdio>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include <gmock/gmock.h>
|
||||
@@ -25,7 +28,7 @@ namespace {
|
||||
using ::testing::NotNull;
|
||||
using EngineVfsTest = MujocoTest;
|
||||
|
||||
TEST_F(EngineVfsTest, AddFileVFS) {
|
||||
TEST_F(EngineVfsTest, AddFileTest) {
|
||||
constexpr char path[] = "engine/testdata/actuation/";
|
||||
const std::string dir = GetTestDataFilePath(path);
|
||||
std::string file1 = "activation.xml";
|
||||
@@ -44,38 +47,51 @@ TEST_F(EngineVfsTest, AddFileVFS) {
|
||||
ASSERT_THAT(fp3, NotNull()) << "Input file3 missing.";
|
||||
std::fclose(fp3);
|
||||
|
||||
auto mj_vfs = std::make_unique<mjVFS>();
|
||||
mj_defaultVFS(mj_vfs.get());
|
||||
auto vfs = std::make_unique<mjVFS>();
|
||||
mj_defaultVFS(vfs.get());
|
||||
|
||||
EXPECT_THAT(mj_vfs->nfile, 0);
|
||||
EXPECT_THAT(mj_addFileVFS(mj_vfs.get(), dir.c_str(), file1.c_str()), 0);
|
||||
EXPECT_THAT(mj_vfs->nfile, 1);
|
||||
EXPECT_THAT(mj_vfs->filename[0], file1);
|
||||
EXPECT_THAT(vfs->nfile, 0);
|
||||
EXPECT_THAT(mj_addFileVFS(vfs.get(), dir.c_str(), file1.c_str()), 0);
|
||||
EXPECT_THAT(vfs->nfile, 1);
|
||||
EXPECT_THAT(vfs->filename[0], file1);
|
||||
|
||||
EXPECT_THAT(mj_addFileVFS(mj_vfs.get(), dir.c_str(), file2.c_str()), 0);
|
||||
EXPECT_THAT(mj_vfs->nfile, 2);
|
||||
EXPECT_THAT(mj_vfs->filename[0], file1);
|
||||
EXPECT_THAT(mj_vfs->filename[1], file2);
|
||||
EXPECT_THAT(mj_addFileVFS(vfs.get(), dir.c_str(), file2.c_str()), 0);
|
||||
EXPECT_THAT(vfs->nfile, 2);
|
||||
EXPECT_THAT(vfs->filename[0], file1);
|
||||
EXPECT_THAT(vfs->filename[1], file2);
|
||||
|
||||
EXPECT_THAT(mj_addFileVFS(mj_vfs.get(), dir.c_str(), file3.c_str()), 0);
|
||||
EXPECT_THAT(mj_vfs->nfile, 3);
|
||||
EXPECT_THAT(mj_vfs->filename[0], file1);
|
||||
EXPECT_THAT(mj_vfs->filename[1], file2);
|
||||
EXPECT_THAT(mj_vfs->filename[2], file3);
|
||||
EXPECT_THAT(mj_addFileVFS(vfs.get(), dir.c_str(), file3.c_str()), 0);
|
||||
EXPECT_THAT(vfs->nfile, 3);
|
||||
EXPECT_THAT(vfs->filename[0], file1);
|
||||
EXPECT_THAT(vfs->filename[1], file2);
|
||||
EXPECT_THAT(vfs->filename[2], file3);
|
||||
|
||||
mj_deleteFileVFS(mj_vfs.get(), file1.c_str());
|
||||
EXPECT_THAT(mj_vfs->nfile, 2);
|
||||
EXPECT_THAT(mj_vfs->filename[0], file2);
|
||||
EXPECT_THAT(mj_vfs->filename[1], file3);
|
||||
mj_deleteFileVFS(vfs.get(), file1.c_str());
|
||||
EXPECT_THAT(vfs->nfile, 2);
|
||||
EXPECT_THAT(vfs->filename[0], file2);
|
||||
EXPECT_THAT(vfs->filename[1], file3);
|
||||
|
||||
mj_deleteFileVFS(mj_vfs.get(), file3.c_str());
|
||||
EXPECT_THAT(mj_vfs->nfile, 1);
|
||||
EXPECT_THAT(mj_vfs->filename[0], file2);
|
||||
mj_deleteFileVFS(vfs.get(), file3.c_str());
|
||||
EXPECT_THAT(vfs->nfile, 1);
|
||||
EXPECT_THAT(vfs->filename[0], file2);
|
||||
|
||||
mj_deleteFileVFS(mj_vfs.get(), file2.c_str());
|
||||
EXPECT_THAT(mj_vfs->nfile, 0);
|
||||
mj_deleteFileVFS(vfs.get(), file2.c_str());
|
||||
EXPECT_THAT(vfs->nfile, 0);
|
||||
|
||||
mj_deleteVFS(mj_vfs.get());
|
||||
mj_deleteVFS(vfs.get());
|
||||
}
|
||||
|
||||
TEST_F(EngineVfsTest, AddBufferTest) {
|
||||
auto vfs = std::make_unique<mjVFS>();
|
||||
mj_defaultVFS(vfs.get());
|
||||
std::string buffer = "<mujoco/>";
|
||||
mj_addBufferVFS(vfs.get(), "model", static_cast<const void*>(buffer.c_str()),
|
||||
buffer.size());
|
||||
std::array<char, 1024> error;
|
||||
mjModel* model = mj_loadXML("model", vfs.get(), error.data(), error.size());
|
||||
EXPECT_THAT(model, NotNull());
|
||||
mj_deleteModel(model);
|
||||
mj_deleteVFS(vfs.get());
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user