init
This commit is contained in:
+112
@@ -0,0 +1,112 @@
|
||||
PROJECT(OpenViBESDKTest)
|
||||
|
||||
# ------------------
|
||||
# Project variables
|
||||
# ------------------
|
||||
|
||||
SET(OVT_GLOBAL_VERSION_MAJOR 0)
|
||||
SET(OVT_GLOBAL_VERSION_MINOR 1)
|
||||
SET(OVT_GLOBAL_VERSION_PATCH 0)
|
||||
SET(OVT_GLOBAL_VERSION_STRING "${OVT_GLOBAL_VERSION_MAJOR}.${OVT_GLOBAL_VERSION_MINOR}.${OVT_GLOBAL_VERSION_PATCH}")
|
||||
|
||||
IF(NOT DEFINED OVT_TEST_DATA_DIR)
|
||||
MESSAGE(FATAL_ERROR "Path to tests input data files is not set")
|
||||
ENDIF()
|
||||
|
||||
# ---------------------
|
||||
# Project dependencies
|
||||
# ---------------------
|
||||
|
||||
# Add some search directory to module path
|
||||
SET(OVT_CMAKE_DIR ${OV_BASE_DIR}/cmake-modules)
|
||||
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${OVT_CMAKE_DIR})
|
||||
|
||||
# Modify library prefixes and suffixes to comply to Windows or Linux naming
|
||||
IF(WIN32)
|
||||
SET(CMAKE_FIND_LIBRARY_PREFIXES "")
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
|
||||
ELSEIF(APPLE)
|
||||
SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".a")
|
||||
ELSE()
|
||||
SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
|
||||
ENDIF()
|
||||
|
||||
SET(GTEST_ROOT ${OV_CUSTOM_DEPENDENCIES_PATH}/${CMAKE_FIND_LIBRARY_PREFIXES}gtest)
|
||||
FIND_PACKAGE(GTest REQUIRED)
|
||||
INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIRS})
|
||||
|
||||
# --------------------
|
||||
# Test configuration
|
||||
# --------------------
|
||||
|
||||
# On Windows and Linux, some environment setting scripts are needed to ease the testing process
|
||||
SET(OVT_SCRIPT_DIR ${OV_BASE_BIN_DIR}/scripts)
|
||||
IF(WIN32)
|
||||
# Wrapper script that set the environment and launch ctest
|
||||
# It is located at build directory root to be as close as possible as standard ctest use
|
||||
CONFIGURE_FILE(${OV_BASE_DIR}/scripts/windows-ctest-launcher.cmd-base
|
||||
${OV_BASE_BIN_DIR}/ctest-launcher.cmd)
|
||||
ELSEIF(UNIX)
|
||||
# Wrapper script that set the environment and launch ctest
|
||||
# It is located at build directory root to be as close as possible as standard ctest use
|
||||
CONFIGURE_FILE(${OV_BASE_DIR}/scripts/unix-ctest-launcher.sh-base
|
||||
${OV_BASE_BIN_DIR}/ctest-launcher.sh)
|
||||
|
||||
ENDIF()
|
||||
|
||||
# ${PROJECT_BINARY_DIR}/Testing/Temporary is automatically created by CTest for log files
|
||||
# We create a temporary subdir for our test that will be create before each test is run
|
||||
# and removed afterwards (see CTestCustom.cmake.in)
|
||||
SET(OVT_TEST_TEMPORARY_DIR ${OV_BASE_BIN_DIR}/Testing/Temporary/OVT/)
|
||||
|
||||
# Create test data directory for big or binary files
|
||||
FILE(MAKE_DIRECTORY ${OVT_TEST_DATA_DIR})
|
||||
|
||||
# Ctest custom options
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/CTestCustom.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake @ONLY)
|
||||
|
||||
# Memcheck configuration
|
||||
IF(UNIX)
|
||||
FIND_PROGRAM(MEMORYCHECK_COMMAND valgrind /usr/bin/valgrind)
|
||||
FILE(TO_CMAKE_PATH "${CMAKE_SOURCE_DIR}/data/resources/valgrind.supp" MEMORYCHECK_SUPPRESSIONS_FILE)
|
||||
SET(MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full --run-libc-freeres=no --show-possibly-lost=no" )
|
||||
ELSEIF(WIN32)
|
||||
FIND_PROGRAM(MEMORYCHECK_COMMAND purify "C:/Program Files (x86)/")
|
||||
ENDIF()
|
||||
|
||||
# Timeout must be set first
|
||||
SET (DART_TESTING_TIMEOUT 72000 CACHE STRING "Maximum time allowed before CTest will kill the test." FORCE)
|
||||
INCLUDE(CTest)
|
||||
ENABLE_TESTING()
|
||||
|
||||
# Utility variable for subproject
|
||||
SET(OVT_OPENVIBE_DATA ${CMAKE_CURRENT_BINARY_DIR}/data/openvibe)
|
||||
|
||||
# ----------------------
|
||||
# CMake tree processing
|
||||
# ----------------------
|
||||
|
||||
# Process tools first.
|
||||
# Some important variables are defined within tools projects for their use by other
|
||||
# projects as:
|
||||
# - OVT_UNIT_TOOLKIT_INCLUDE_DIR
|
||||
# - OVT_UNIT_TOOLKIT_TARGET_FILE
|
||||
# - OVT_ACCURACY_TARGET_FILE
|
||||
ADD_SUBDIRECTORY(unit-toolkit)
|
||||
|
||||
INCLUDE_DIRECTORIES(${OVT_UNIT_TOOLKIT_INCLUDE_DIR})
|
||||
|
||||
# Process unit tests
|
||||
# When adding a new test driver, driver directory must be added here
|
||||
ADD_SUBDIRECTORY(ov-base)
|
||||
ADD_SUBDIRECTORY(openvibe-module-csv)
|
||||
ADD_SUBDIRECTORY(openvibe-module-fs)
|
||||
ADD_SUBDIRECTORY(openvibe-module-ebml)
|
||||
ADD_SUBDIRECTORY(openvibe-module-xml)
|
||||
ADD_SUBDIRECTORY(openvibe-module-socket)
|
||||
ADD_SUBDIRECTORY(openvibe-module-system)
|
||||
ADD_SUBDIRECTORY(openvibe-toolkit)
|
||||
ADD_SUBDIRECTORY(openvibe-kernel)
|
||||
ADD_SUBDIRECTORY(openvibe-plugin-stream-codecs)
|
||||
@@ -0,0 +1,63 @@
|
||||
#######################################################################
|
||||
# Software License Agreement (AGPL-3 License)
|
||||
#
|
||||
# OpenViBE SDK Test Software
|
||||
# Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
# Copyright (C) Inria, 2015-2017,V1.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License version 3,
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#######################################################################
|
||||
|
||||
# Define following options here:
|
||||
|
||||
# CTEST_CUSTOM_ERROR_MATCH Regular expression for errors during build process
|
||||
# CTEST_CUSTOM_ERROR_EXCEPTION Regular expression for error exceptions during build process
|
||||
# CTEST_CUSTOM_WARNING_MATCH Regular expression for warnings during build process
|
||||
# CTEST_CUSTOM_WARNING_EXCEPTION Regular expression for warning exception during build process
|
||||
# CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS Maximum number of errors to display
|
||||
# CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS Maximum number of warnings to display
|
||||
# CTEST_CUSTOM_TESTS_IGNORE List of tests to ignore during the Test stage
|
||||
# CTEST_CUSTOM_MEMCHECK_IGNORE List of tests to ignore during the MemCheck stage
|
||||
# CTEST_CUSTOM_PRE_TEST Command to execute before any tests are run during Test stage
|
||||
# CTEST_CUSTOM_POST_TEST Command to execute after any tests are run during Test stage
|
||||
# CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE Maximum size of passed test output
|
||||
# CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE Maximum size of failed test output
|
||||
# CTEST_CUSTOM_PRE_MEMCHECK Command to execute before any tests are run during MemCheck stage
|
||||
# CTEST_CUSTOM_POST_MEMCHECK Command to execute after any tests are run during MemCheck stage
|
||||
# CTEST_CUSTOM_COVERAGE_EXCLUDE Regular expression for excluding files from coverage testing
|
||||
# CTEST_CUSTOM_COVERAGE_GLOB Report on uncovered files matching this expression
|
||||
|
||||
# -----------------------------
|
||||
# CTest variable customization
|
||||
# -----------------------------
|
||||
|
||||
SET(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 100000)
|
||||
|
||||
# Warning exception are used to remove warning
|
||||
# linked with ctest generated files (test runner cpp files)
|
||||
SET(CTEST_CUSTOM_WARNING_EXCEPTION
|
||||
${CTEST_CUSTOM_WARNING_EXCEPTION}
|
||||
"warning C4996"
|
||||
)
|
||||
|
||||
# Create unit test temporary dir
|
||||
SET(CTEST_CUSTOM_PRE_TEST "@CMAKE_COMMAND@ -E make_directory @OVT_TEST_TEMPORARY_DIR@")
|
||||
|
||||
# Remove unit test temporary dir
|
||||
SET(CTEST_CUSTOM_POST_TEST "@CMAKE_COMMAND@ -E remove_directory @OVT_TEST_TEMPORARY_DIR@")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "ovtKernelContext.h"
|
||||
|
||||
namespace OpenViBE {
|
||||
namespace Test {
|
||||
bool ctx::initialize()
|
||||
{
|
||||
#if defined TARGET_OS_Windows
|
||||
const CString kernelFile = Directories::getLibDir() + "/openvibe-kernel.dll";
|
||||
#elif defined TARGET_OS_Linux
|
||||
const CString kernelFile = Directories::getLibDir() + "/libopenvibe-kernel.so";
|
||||
#elif defined TARGET_OS_MacOS
|
||||
const CString kernelFile = Directories::getLibDir() + "/libopenvibe-kernel.dylib";
|
||||
#endif
|
||||
CString error;
|
||||
|
||||
if (!m_KernelLoader.load(kernelFile, &error))
|
||||
{
|
||||
std::cerr << "ERROR: impossible to load kernel from file located at: " << kernelFile << std::endl;
|
||||
std::cerr << "ERROR: kernel error: " << error << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
m_KernelLoader.initialize();
|
||||
|
||||
Kernel::IKernelDesc* kernelDesc{ nullptr };
|
||||
m_KernelLoader.getKernelDesc(kernelDesc);
|
||||
|
||||
if (!kernelDesc)
|
||||
{
|
||||
std::cerr << "ERROR: impossible to retrieve kernel descriptor " << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
const CString configFile = CString(Directories::getDataDir() + "/kernel/openvibe.conf");
|
||||
|
||||
Kernel::IKernelContext* ctx = kernelDesc->createKernel("test-kernel", configFile);
|
||||
|
||||
if (!ctx)
|
||||
{
|
||||
std::cerr << "ERROR: impossible to create kernel context " << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
ctx->initialize();
|
||||
|
||||
m_Context = ctx;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ctx::uninitialize()
|
||||
{
|
||||
if (m_Context)
|
||||
{
|
||||
Kernel::IKernelDesc* kernelDesc{ nullptr };
|
||||
m_KernelLoader.getKernelDesc(kernelDesc);
|
||||
kernelDesc->releaseKernel(m_Context);
|
||||
m_Context = nullptr;
|
||||
}
|
||||
|
||||
m_KernelLoader.uninitialize();
|
||||
m_KernelLoader.unload();
|
||||
|
||||
return true;
|
||||
}
|
||||
} // namespace Test
|
||||
} // namespace OpenViBE
|
||||
@@ -0,0 +1,48 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <openvibe/ov_all.h>
|
||||
|
||||
namespace OpenViBE
|
||||
{
|
||||
namespace Test
|
||||
{
|
||||
class ctx final
|
||||
{
|
||||
public:
|
||||
ctx() = default;
|
||||
~ctx() = default;
|
||||
|
||||
bool initialize();
|
||||
bool uninitialize();
|
||||
|
||||
Kernel::IKernelContext* operator->() { return m_Context; }
|
||||
|
||||
private:
|
||||
Kernel::IKernelContext* m_Context{nullptr};
|
||||
CKernelLoader m_KernelLoader;
|
||||
};
|
||||
} // namespace Test
|
||||
} // namespace OpenViBE
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
<insert_a_suppression_name_here>
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: definite
|
||||
fun:malloc
|
||||
obj:*
|
||||
obj:*
|
||||
obj:*
|
||||
obj:*
|
||||
fun:call_init.part.0
|
||||
fun:call_init
|
||||
fun:_dl_init
|
||||
fun:dl_open_worker
|
||||
fun:_dl_catch_error
|
||||
fun:_dl_open
|
||||
fun:dlopen_doit
|
||||
fun:_dl_catch_error
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
#######################################################################
|
||||
# Software License Agreement (AGPL-3 License)
|
||||
#
|
||||
# OpenViBE SDK Test Software
|
||||
# Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
# Copyright (C) Inria, 2015-2017,V1.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License version 3,
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#######################################################################
|
||||
|
||||
PROJECT(openvibe-kernel-test)
|
||||
|
||||
# ---------------------------------
|
||||
# Target macros
|
||||
# Defines target operating system, architecture and compiler
|
||||
# ---------------------------------
|
||||
SET_BUILD_PLATFORM()
|
||||
|
||||
# ----------------------
|
||||
# Configure test target
|
||||
# ----------------------
|
||||
|
||||
# Test that needs to called with parameters
|
||||
SET(TEST_WITH_PARAM
|
||||
urErrorManagerTest.cpp
|
||||
)
|
||||
|
||||
# Test that needs to called without parameters
|
||||
SET(TEST_NO_PARAM
|
||||
)
|
||||
|
||||
# Create test sources list
|
||||
# This macro auto-generate ${PROJECT_NAME}.cpp
|
||||
# in the build tree. ${PROJECT_NAME}.cpp is
|
||||
# the test driver called by ctest to run
|
||||
# the different tests added to this target.
|
||||
CREATE_TEST_SOURCELIST (Tests
|
||||
${PROJECT_NAME}.cpp
|
||||
${TEST_WITH_PARAM}
|
||||
${TEST_NO_PARAM}
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} ${Tests})
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBECommon")
|
||||
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${TESTS_FOLDER})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OVT_UNIT_TOOLKIT_LIB} ${GTEST_BOTH_LIBRARIES} ${OV_LIBS})
|
||||
|
||||
# Add test without parameter to driver
|
||||
FOREACH(test ${TEST_NO_PARAM})
|
||||
GET_FILENAME_COMPONENT(TName ${test} NAME_WE)
|
||||
ADD_TEST(NAME ${TName} COMMAND ${PROJECT_NAME} ${TName})
|
||||
ENDFOREACH()
|
||||
|
||||
# Add test with parameter to driver
|
||||
ADD_TEST(NAME urErrorManagerTest COMMAND ${PROJECT_NAME} urErrorManagerTest "${OVT_OPENVIBE_DATA}/kernel/openvibe.conf")
|
||||
+140
@@ -0,0 +1,140 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "ovtAssert.h"
|
||||
#include "ovtTestFixtureCommon.h"
|
||||
|
||||
// DO NOT USE a global Test::ScopedTest<Test::SKernelFixture> variable here
|
||||
// because it causes a bug due to plugins global descriptors beeing destroyed before the kernel context.
|
||||
OpenViBE::Kernel::IKernelContext* context = nullptr;
|
||||
|
||||
TEST(error_manager_test_case, test_init)
|
||||
{
|
||||
// here we use assert because we want to fail directly
|
||||
// in order to avoid a segfault
|
||||
ASSERT_TRUE(context != nullptr);
|
||||
|
||||
auto& errorManager = context->getErrorManager();
|
||||
|
||||
// check manager is correctly initialized
|
||||
EXPECT_FALSE(errorManager.hasError());
|
||||
EXPECT_TRUE(errorManager.getLastError() == nullptr);
|
||||
EXPECT_TRUE(std::string(errorManager.getLastErrorString()).empty());
|
||||
EXPECT_EQ(errorManager.getLastErrorType(), OpenViBE::Kernel::ErrorType::NoErrorFound);
|
||||
|
||||
EXPECT_NO_THROW(errorManager.releaseErrors());
|
||||
}
|
||||
|
||||
TEST(error_manager_test_case, test_push)
|
||||
{
|
||||
// here we use assert because we want to fail directly
|
||||
// in order to avoid a segfault
|
||||
ASSERT_TRUE(context != nullptr);
|
||||
|
||||
auto& errorManager = context->getErrorManager();
|
||||
|
||||
// push an error
|
||||
errorManager.pushError(OpenViBE::Kernel::ErrorType::Overflow, "An integer overflow error occurred");
|
||||
|
||||
EXPECT_TRUE(errorManager.hasError());
|
||||
EXPECT_STREQ(errorManager.getLastErrorString(), "An integer overflow error occurred");
|
||||
EXPECT_EQ(errorManager.getLastErrorType(), OpenViBE::Kernel::ErrorType::Overflow);
|
||||
|
||||
// test match error features returned direclty by manager match error features
|
||||
auto error = errorManager.getLastError();
|
||||
|
||||
ASSERT_TRUE(error != nullptr);
|
||||
EXPECT_STREQ(error->getErrorString(), "An integer overflow error occurred");
|
||||
EXPECT_EQ(error->getErrorType(), OpenViBE::Kernel::ErrorType::Overflow);
|
||||
EXPECT_STREQ(error->getErrorLocation(), "NoLocationInfo:0");
|
||||
EXPECT_TRUE(error->getNestedError() == nullptr);
|
||||
|
||||
// push another error
|
||||
errorManager.pushErrorAtLocation(OpenViBE::Kernel::ErrorType::BadAlloc, "Memory allocation failed", "urErrorManagerTest.cpp", 64);
|
||||
|
||||
// test top error has changed
|
||||
EXPECT_STREQ(errorManager.getLastErrorString(), "Memory allocation failed");
|
||||
EXPECT_EQ(errorManager.getLastErrorType(), OpenViBE::Kernel::ErrorType::BadAlloc);
|
||||
|
||||
error = errorManager.getLastError();
|
||||
ASSERT_TRUE(error != nullptr);
|
||||
EXPECT_STREQ(error->getErrorString(), "Memory allocation failed");
|
||||
EXPECT_EQ(error->getErrorType(), OpenViBE::Kernel::ErrorType::BadAlloc);
|
||||
EXPECT_STREQ(error->getErrorLocation(), "urErrorManagerTest.cpp:64");
|
||||
|
||||
auto nestedError = error->getNestedError();
|
||||
ASSERT_TRUE(nestedError != nullptr);
|
||||
EXPECT_STREQ(nestedError->getErrorString(), "An integer overflow error occurred");
|
||||
EXPECT_EQ(nestedError->getErrorType(), OpenViBE::Kernel::ErrorType::Overflow);
|
||||
EXPECT_STREQ(nestedError->getErrorLocation(), "NoLocationInfo:0");
|
||||
EXPECT_TRUE(nestedError->getNestedError() == nullptr);
|
||||
}
|
||||
|
||||
TEST(error_manager_test_case, test_release)
|
||||
{
|
||||
// here we use assert because we want to fail directly
|
||||
// in order to avoid a segfault
|
||||
ASSERT_TRUE(context != nullptr);
|
||||
|
||||
auto& errorManager = context->getErrorManager();
|
||||
errorManager.releaseErrors();
|
||||
|
||||
// check manager is correctly released
|
||||
EXPECT_FALSE(errorManager.hasError());
|
||||
EXPECT_TRUE(errorManager.getLastError() == nullptr);
|
||||
EXPECT_TRUE(std::string(errorManager.getLastErrorString()).empty());
|
||||
EXPECT_EQ(errorManager.getLastErrorType(), OpenViBE::Kernel::ErrorType::NoErrorFound);
|
||||
|
||||
// add an error after release
|
||||
errorManager.pushErrorAtLocation(OpenViBE::Kernel::ErrorType::ResourceNotFound, "File not found on system", "urErrorManagerTest.cpp", 93);
|
||||
|
||||
EXPECT_TRUE(errorManager.hasError());
|
||||
EXPECT_STREQ(errorManager.getLastErrorString(), "File not found on system");
|
||||
EXPECT_EQ(errorManager.getLastErrorType(), OpenViBE::Kernel::ErrorType::ResourceNotFound);
|
||||
|
||||
auto error = errorManager.getLastError();
|
||||
|
||||
ASSERT_TRUE(error != nullptr);
|
||||
EXPECT_STREQ(error->getErrorString(), "File not found on system");
|
||||
EXPECT_EQ(error->getErrorType(), OpenViBE::Kernel::ErrorType::ResourceNotFound);
|
||||
EXPECT_STREQ(error->getErrorLocation(), "urErrorManagerTest.cpp:93");
|
||||
EXPECT_TRUE(error->getNestedError() == nullptr);
|
||||
}
|
||||
|
||||
TEST(error_manager_test_case, test_stress_push)
|
||||
{
|
||||
// here we use assert because we want to fail directly
|
||||
// in order to avoid a segfault
|
||||
ASSERT_TRUE(context != nullptr);
|
||||
|
||||
auto& errorManager = context->getErrorManager();
|
||||
|
||||
errorManager.releaseErrors();
|
||||
const size_t expectedErrorCount = 10;
|
||||
for (size_t i = 0; i < expectedErrorCount; ++i) { errorManager.pushError(OpenViBE::Kernel::ErrorType::Unknown, "Error"); }
|
||||
|
||||
size_t errorCount = 0;
|
||||
auto error = errorManager.getLastError();
|
||||
while (error)
|
||||
{
|
||||
errorCount++;
|
||||
error = error->getNestedError();
|
||||
}
|
||||
|
||||
EXPECT_EQ(errorCount, expectedErrorCount);
|
||||
}
|
||||
|
||||
int urErrorManagerTest(int argc, char* argv[])
|
||||
{
|
||||
OVT_ASSERT(argc >= 2, "Failure retrieve test parameters");
|
||||
|
||||
OpenViBE::Test::ScopedTest<OpenViBE::Test::SKernelFixture> fixture;
|
||||
fixture->setConfigFile(argv[1]);
|
||||
|
||||
context = fixture->context;
|
||||
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
::testing::GTEST_FLAG(filter) = "error_manager_test_case.*";
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
#######################################################################
|
||||
# Software License Agreement (AGPL-3 License)
|
||||
#
|
||||
# OpenViBE SDK Test Software
|
||||
# Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
# Copyright (C) Inria, 2015-2017,V1.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License version 3,
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#######################################################################
|
||||
|
||||
PROJECT(openvibe-module-csv-test)
|
||||
|
||||
# ---------------------------------
|
||||
# Target macros
|
||||
# Defines target operating system, architecture and compiler
|
||||
# ---------------------------------
|
||||
SET_BUILD_PLATFORM()
|
||||
|
||||
# ----------------------
|
||||
# Configure test target
|
||||
# ----------------------
|
||||
|
||||
# Test that needs to called with parameters
|
||||
SET(TEST_WITH_PARAM
|
||||
uoCSVWriterTest.cpp
|
||||
uoCSVReaderTest.cpp
|
||||
)
|
||||
|
||||
# Test that needs to called without parameters
|
||||
SET(TEST_NO_PARAM
|
||||
)
|
||||
|
||||
# Create test sources list
|
||||
# This macro auto-generate ${PROJECT_NAME}.cpp
|
||||
# in the build tree. ${PROJECT_NAME}.cpp is
|
||||
# the test driver called by ctest to run
|
||||
# the different tests added to this target.
|
||||
CREATE_TEST_SOURCELIST (Tests
|
||||
${PROJECT_NAME}.cpp
|
||||
${TEST_WITH_PARAM}
|
||||
${TEST_NO_PARAM}
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} ${Tests})
|
||||
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBEModuleCSV")
|
||||
|
||||
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${TESTS_FOLDER})
|
||||
# set(OV_MODULE_CSV "C:/gitdir/build/openvibe-sdk-debug/modules/csv/openvibe-module-csv")
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OVT_UNIT_TOOLKIT_LIB} ${GTEST_BOTH_LIBRARIES} ${OV_LIBS} ${OV_MODULE_CSV})
|
||||
|
||||
# Add test without parameter to driver
|
||||
FOREACH(test ${TEST_NO_PARAM})
|
||||
GET_FILENAME_COMPONENT(TName ${test} NAME_WE)
|
||||
ADD_TEST(NAME ${TName} COMMAND ${PROJECT_NAME} ${TName})
|
||||
ENDFOREACH()
|
||||
|
||||
# Add test with parameter to driver
|
||||
ADD_TEST(NAME uoCSVWriterTest COMMAND ${PROJECT_NAME} uoCSVWriterTest "${OVT_TEST_TEMPORARY_DIR}")
|
||||
ADD_TEST(NAME uoCSVReaderTest COMMAND ${PROJECT_NAME} uoCSVReaderTest "${CMAKE_CURRENT_SOURCE_DIR}/data/")
|
||||
#ADD_TEST(NAME uoCSVWriterTest COMMAND ${PROJECT_NAME} uoCSVWriter)
|
||||
#ADD_TEST(NAME uoCSVReaderTest COMMAND ${PROJECT_NAME} uoCSVReader)
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
testCSVSignalUNIXEndlines.csv eol=lf
|
||||
testCSVSignalWindowsEndlines.csv eol=crlf
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
Time:2x2x5,End Time,X:X:Z1,X:X:Z2,X:X:Z3,X:X:Z4,X:X:Z5,X:Y:Z1,X:Y:Z2,X:Y:Z3,X:Y:Z4,X:Y:Z5,Y:X:Z1,Y:X:Z2,Y:X:Z3,Y:X:Z4,Y:X:Z5,Y:Y:Z1,Y:Y:Z2,Y:Y:Z3,Y:Y:Z4,Y:Y:Z5,Event Id,Event Date,Event Duration
|
||||
0.0,1.0,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,,,
|
||||
0.25,1.25,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,,,
|
||||
0.5,1.5,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,,,
|
||||
|
+11
@@ -0,0 +1,11 @@
|
||||
Time:2x2x2,End Time,::,::,::,::,:::,::,::,::,Event Id,Event Date,Event Duration
|
||||
0.00000,1.00000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.12500,1.12500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.25000,1.25000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,32000:32010,0.25000:0.25000,0.0:0.0
|
||||
0.37500,1.37500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.50000,1.50000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.62500,1.62500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.75000,1.75000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,35000,0.80000,0.0
|
||||
0.87500,1.87500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
1.00000,2.00000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
1.12500,2.00000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
|
Executable
+51
@@ -0,0 +1,51 @@
|
||||
Time:2x2x2,End Time,C1:C1:Matrix 1,C1:C1:Matrix 2,C1:C2:Matrix 1,C1:C2:Matrix 2,C2:C1:Matrix 1,C2:C1:Matrix 2,C2:C2:Matrix 1,C2:C2:Matrix 2,Event Id,Event Date,Event Duration
|
||||
0.0000000000,1.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
1.0000000000,2.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
2.0000000000,3.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
3.0000000000,4.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
4.0000000000,5.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
5.0000000000,6.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
6.0000000000,7.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
7.0000000000,8.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
8.0000000000,9.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
9.0000000000,10.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
10.0000000000,11.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
11.0000000000,12.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
12.0000000000,13.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
13.0000000000,14.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
14.0000000000,15.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
15.0000000000,16.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
16.0000000000,17.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
17.0000000000,18.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
18.0000000000,19.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
19.0000000000,20.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
20.0000000000,21.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
21.0000000000,22.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
22.0000000000,23.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
23.0000000000,24.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
24.0000000000,25.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
25.0000000000,26.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
26.0000000000,27.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
27.0000000000,28.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
28.0000000000,29.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
29.0000000000,30.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
30.0000000000,31.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
31.0000000000,32.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
32.0000000000,33.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
33.0000000000,34.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
34.0000000000,35.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
35.0000000000,36.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
36.0000000000,37.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
37.0000000000,38.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
38.0000000000,39.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
39.0000000000,40.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
40.0000000000,41.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
41.0000000000,42.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
42.0000000000,43.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
43.0000000000,44.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
44.0000000000,45.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
45.0000000000,46.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
46.0000000000,47.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
47.0000000000,48.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
48.0000000000,49.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
49.0000000000,50.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
|
Executable
+51
@@ -0,0 +1,51 @@
|
||||
Time:2x2x2,End Time,::,::,::,::,::,::,::,::,Event Id,Event Date,Event Duration
|
||||
0.0000000000,1.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
1.0000000000,2.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
2.0000000000,3.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
3.0000000000,4.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
4.0000000000,5.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
5.0000000000,6.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
6.0000000000,7.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
7.0000000000,8.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
8.0000000000,9.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
9.0000000000,10.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
10.0000000000,11.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
11.0000000000,12.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
12.0000000000,13.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
13.0000000000,14.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
14.0000000000,15.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
15.0000000000,16.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
16.0000000000,17.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
17.0000000000,18.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
18.0000000000,19.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
19.0000000000,20.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
20.0000000000,21.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
21.0000000000,22.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
22.0000000000,23.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
23.0000000000,24.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
24.0000000000,25.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
25.0000000000,26.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
26.0000000000,27.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
27.0000000000,28.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
28.0000000000,29.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
29.0000000000,30.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
30.0000000000,31.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
31.0000000000,32.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
32.0000000000,33.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
33.0000000000,34.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
34.0000000000,35.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
35.0000000000,36.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
36.0000000000,37.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
37.0000000000,38.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
38.0000000000,39.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
39.0000000000,40.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
40.0000000000,41.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
41.0000000000,42.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
42.0000000000,43.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
43.0000000000,44.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
44.0000000000,45.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
45.0000000000,46.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
46.0000000000,47.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
47.0000000000,48.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
48.0000000000,49.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
49.0000000000,50.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
|
Executable
|
|
+4
@@ -0,0 +1,4 @@
|
||||
Time:2x3x5,End Time,X:X:Z1,X:X:Z2,X:X:Z3,X:X:Z4,X:X:Z5,X:Y:Z1,X:Y:Z2,X:Y:Z3,X:Y:Z4,X:Y:Z5,Y:X:Z1,Y:X:Z2,Y:X:Z3,Y:X:Z4,Y:X:Z5,Y:Y:Z1,Y:Y:Z2,Y:Y:Z3,Y:Y:Z4,Y:Y:Z5,Event Id,Event Date,Event Duration
|
||||
0,1,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,,,
|
||||
0.25,1.25,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,,,
|
||||
0.5,1.5,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,,,
|
||||
|
Masterarbeit/openvibe/sdk-master/unit-test/openvibe-module-csv/data/testCSVFeatureVectorWriter01.csv
Executable
+12
@@ -0,0 +1,12 @@
|
||||
Time:3,End Time,F1,F2,F3,Event Id,Event Date,Event Duration
|
||||
0.0000000000,1.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,,,
|
||||
1.0000000000,2.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,,,
|
||||
2.0000000000,3.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,,,
|
||||
3.0000000000,4.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,,,
|
||||
4.0000000000,5.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,,,
|
||||
5.0000000000,6.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,,,
|
||||
6.0000000000,7.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,35001,6.5000000000,1.0000000000
|
||||
7.0000000000,8.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,,,
|
||||
8.0000000000,9.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,35001,8.5000000000,1.0000000000
|
||||
9.0000000000,10.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,,,
|
||||
10.0000000000,11.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,35001,10.5000000000,1.0000000000
|
||||
|
Masterarbeit/openvibe/sdk-master/unit-test/openvibe-module-csv/data/testCSVFeatureVectorWriter02.csv
Executable
+1
@@ -0,0 +1 @@
|
||||
Time:3,End Time,,,,Event Id,Event Date,Event Duration
|
||||
|
|
|
Executable
+11
@@ -0,0 +1,11 @@
|
||||
Time:2x2x2,End Time,::,::,::,::,::,::,::,::,Event Id,Event Date,Event Duration
|
||||
0.00000,1.00000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.12500,1.12500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.25000,1.25000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,32000:32010,0.25000:0.25000,0.0:0.0
|
||||
0.37500,1.37500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.50000,1.50000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.62500,1.62500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.75000,1.75000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,35000,0.80000,0.0
|
||||
0.87500,1.87500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
1.00000,2.00000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
1.12500,2.00000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
|
Executable
+11
@@ -0,0 +1,11 @@
|
||||
Time:2x2x2,End Time,::,::,::,::,:::,::,::,::,Event Id,Event Date,Event Duration
|
||||
0.00000,1.00000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.12500,1.12500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.25000,1.25000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,32000:32010,0.25000:0.25000,0.0:0.0
|
||||
0.37500,1.37500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.50000,1.50000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.62500,1.62500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
0.75000,1.75000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,35000,0.80000,0.0
|
||||
0.87500,1.87500,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
1.00000,2.00000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
1.12500,2.00000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,,,
|
||||
|
Executable
+12
@@ -0,0 +1,12 @@
|
||||
Time:2x2x2,End Time,LA:1:X,LA:1:Y,LA:2:X,LA:2:Y,LB:1:X,LB:1:Y,LB:2:X,LB:2:Y,Event Id,Event Date,Event Duration
|
||||
0.0000000000,1.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
1.0000000000,2.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
2.0000000000,3.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
3.0000000000,4.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
4.0000000000,5.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
5.0000000000,6.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
6.0000000000,7.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,35001,6.5000000000,1.0000000000
|
||||
7.0000000000,8.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
8.0000000000,9.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,35001,8.5000000000,1.0000000000
|
||||
9.0000000000,10.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
10.0000000000,11.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,35001,10.5000000000,1.0000000000
|
||||
|
Executable
+12
@@ -0,0 +1,12 @@
|
||||
Time:2x2x2,End Time,::,::,::,::,::,::,::,::,Event Id,Event Date,Event Duration
|
||||
0.0000000000,1.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
1.0000000000,2.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
2.0000000000,3.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
3.0000000000,4.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
4.0000000000,5.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
5.0000000000,6.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
6.0000000000,7.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,35001,6.5000000000,1.0000000000
|
||||
7.0000000000,8.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
8.0000000000,9.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,35001,8.5000000000,1.0000000000
|
||||
9.0000000000,10.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,,,
|
||||
10.0000000000,11.0000000000,-20.2000000000,-15.1500000000,-10.1000000000,-5.0500000000,5.0500000000,10.1000000000,15.1500000000,20.2000000000,35001,10.5000000000,1.0000000000
|
||||
|
Executable
+12
@@ -0,0 +1,12 @@
|
||||
Time:1x4,End Time,L1:A,L1:B,L1:C,L1:D,Event Id,Event Date,Event Duration
|
||||
0.0000000000,1.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,,,
|
||||
1.0000000000,2.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,,,
|
||||
2.0000000000,3.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,,,
|
||||
3.0000000000,4.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,,,
|
||||
4.0000000000,5.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,,,
|
||||
5.0000000000,6.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,,,
|
||||
6.0000000000,7.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,35001,6.5000000000,1.0000000000
|
||||
7.0000000000,8.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,,,
|
||||
8.0000000000,9.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,35001,8.5000000000,1.0000000000
|
||||
9.0000000000,10.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,,,
|
||||
10.0000000000,11.0000000000,-20.2000000000,-10.1000000000,10.1000000000,20.2000000000,35001,10.5000000000,1.0000000000
|
||||
|
Executable
|
|
Executable
+12
@@ -0,0 +1,12 @@
|
||||
Time:6x8x2,End Time,L1:A1:X,L1:A1:Y,L1:B2:X,L1:B2:Y,L1:C3:X,L1:C3:Y,L1:D4:X,L1:D4:Y,L1:E5:X,L1:E5:Y,L1:F6:X,L1:F6:Y,L1:G7:X,L1:G7:Y,L1:H8:X,L1:H8:Y,L2:A1:X,L2:A1:Y,L2:B2:X,L2:B2:Y,L2:C3:X,L2:C3:Y,L2:D4:X,L2:D4:Y,L2:E5:X,L2:E5:Y,L2:F6:X,L2:F6:Y,L2:G7:X,L2:G7:Y,L2:H8:X,L2:H8:Y,L3:A1:X,L3:A1:Y,L3:B2:X,L3:B2:Y,L3:C3:X,L3:C3:Y,L3:D4:X,L3:D4:Y,L3:E5:X,L3:E5:Y,L3:F6:X,L3:F6:Y,L3:G7:X,L3:G7:Y,L3:H8:X,L3:H8:Y,L4:A1:X,L4:A1:Y,L4:B2:X,L4:B2:Y,L4:C3:X,L4:C3:Y,L4:D4:X,L4:D4:Y,L4:E5:X,L4:E5:Y,L4:F6:X,L4:F6:Y,L4:G7:X,L4:G7:Y,L4:H8:X,L4:H8:Y,L5:A1:X,L5:A1:Y,L5:B2:X,L5:B2:Y,L5:C3:X,L5:C3:Y,L5:D4:X,L5:D4:Y,L5:E5:X,L5:E5:Y,L5:F6:X,L5:F6:Y,L5:G7:X,L5:G7:Y,L5:H8:X,L5:H8:Y,L6:A1:X,L6:A1:Y,L6:B2:X,L6:B2:Y,L6:C3:X,L6:C3:Y,L6:D4:X,L6:D4:Y,L6:E5:X,L6:E5:Y,L6:F6:X,L6:F6:Y,L6:G7:X,L6:G7:Y,L6:H8:X,L6:H8:Y,Event Id,Event Date,Event Duration
|
||||
0.0000000000,1.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,,,
|
||||
1.0000000000,2.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,,,
|
||||
2.0000000000,3.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,,,
|
||||
3.0000000000,4.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,,,
|
||||
4.0000000000,5.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,,,
|
||||
5.0000000000,6.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,,,
|
||||
6.0000000000,7.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,35001,6.5000000000,1.0000000000
|
||||
7.0000000000,8.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,,,
|
||||
8.0000000000,9.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,35001,8.5000000000,1.0000000000
|
||||
9.0000000000,10.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,,,
|
||||
10.0000000000,11.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,64.0000000000,65.0000000000,66.0000000000,67.0000000000,68.0000000000,69.0000000000,70.0000000000,71.0000000000,72.0000000000,73.0000000000,74.0000000000,75.0000000000,76.0000000000,77.0000000000,78.0000000000,79.0000000000,80.0000000000,81.0000000000,82.0000000000,83.0000000000,84.0000000000,85.0000000000,86.0000000000,87.0000000000,88.0000000000,89.0000000000,90.0000000000,91.0000000000,92.0000000000,93.0000000000,94.0000000000,95.0000000000,35001,10.5000000000,1.0000000000
|
||||
|
Executable
+12
@@ -0,0 +1,12 @@
|
||||
Time:4x1x4,End Time,L1:X:R1,L1:X:R2,L1:X:R3,L1:X:R4,L2:X:R1,L2:X:R2,L2:X:R3,L2:X:R4,L3:X:R1,L3:X:R2,L3:X:R3,L3:X:R4,L4:X:R1,L4:X:R2,L4:X:R3,L4:X:R4,Event Id,Event Date,Event Duration
|
||||
0.0000000000,1.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,,,
|
||||
1.0000000000,2.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,,,
|
||||
2.0000000000,3.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,,,
|
||||
3.0000000000,4.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,,,
|
||||
4.0000000000,5.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,,,
|
||||
5.0000000000,6.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,,,
|
||||
6.0000000000,7.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,35001,6.5000000000,1.0000000000
|
||||
7.0000000000,8.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,,,
|
||||
8.0000000000,9.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,35001,8.5000000000,1.0000000000
|
||||
9.0000000000,10.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,,,
|
||||
10.0000000000,11.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,35001,10.5000000000,1.0000000000
|
||||
|
Executable
|
|
Executable
+2
@@ -0,0 +1,2 @@
|
||||
Time:2x2x2,End Time,LA:1:X,LA:1:Y,LA:2:X,LA:2:Y,LB:1:X,LB:1:Y,LB:2:X,LB:2:Y,Event Id,Event Date,Event Duration
|
||||
49.0000000000,50.0000000000,49.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,,,
|
||||
|
Executable
+1
@@ -0,0 +1 @@
|
||||
Time:2x2x2,End Time,::,::,::,::,:,::,::,::,Event Id,Event Date,Event Duration
|
||||
|
+2
@@ -0,0 +1,2 @@
|
||||
Time:2x2x2,End Time,::,::,::,::,::,::,::,::,Event Id,Event Date,Event Duration
|
||||
0.75000,1.75000,-20.20,-15.15,-10.10,-5.05,5.05,10.10,15.15,20.20,35000:32010,0.80000,0.0:0.0
|
||||
|
Executable
|
|
Executable
+14
@@ -0,0 +1,14 @@
|
||||
Time:8Hz,Epoch,O1,O2,Pz,P1,P2,Event Id,Event Date,Event Duration
|
||||
0.00000,0,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
0.12500,0,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
0.25000,0,-20.20,-10.10,0.0,10.10,20.20,32000:32010,0.25000:0.25000,0:0
|
||||
0.37500,0,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
0.50000,1,-80.80,-40.40,0.0,40.40,80.80,,,
|
||||
0.62500,1,-80.80,-40.40,0.0,40.40,80.80,,,
|
||||
0.75000,1,-80.80,-40.40,0.0,40.40,80.80,35000,0.75250,0
|
||||
0.87500,1,-80.80,-40.40,0.0,40.40,80.80,,,
|
||||
1.00000,2,-320.320,-160.160,0.0,160.160,320.320,,,
|
||||
1.12500,2,-320.320,-160.160,0.0,160.160,320.320,,,
|
||||
1.25000,2,-320.320,-160.160,0.0,160.160,320.320,,,
|
||||
1.37500,2,-320.320,-160.160,0.0,160.160,320.320,,,
|
||||
|
||||
|
Executable
+161
@@ -0,0 +1,161 @@
|
||||
Time:32Hz,Epoch,Time signal,Event Id,Event Date,Event Duration
|
||||
0.0000000000,0,0.0000000000,,,
|
||||
0.0312500000,0,0.0312500000,,,
|
||||
0.0625000000,0,0.0625000000,,,
|
||||
0.0937500000,0,0.0937500000,,,
|
||||
0.1250000000,0,0.1250000000,,,
|
||||
0.1562500000,0,0.1562500000,,,
|
||||
0.1875000000,0,0.1875000000,,,
|
||||
0.2187500000,0,0.2187500000,,,
|
||||
0.2500000000,1,0.2500000000,,,
|
||||
0.2812500000,1,0.2812500000,,,
|
||||
0.3125000000,1,0.3125000000,,,
|
||||
0.3437500000,1,0.3437500000,,,
|
||||
0.3750000000,1,0.3750000000,,,
|
||||
0.4062500000,1,0.4062500000,,,
|
||||
0.4375000000,1,0.4375000000,,,
|
||||
0.4687500000,1,0.4687500000,,,
|
||||
0.5000000000,2,0.5000000000,,,
|
||||
0.5312500000,2,0.5312500000,,,
|
||||
0.5625000000,2,0.5625000000,,,
|
||||
0.5937500000,2,0.5937500000,,,
|
||||
0.6250000000,2,0.6250000000,,,
|
||||
0.6562500000,2,0.6562500000,,,
|
||||
0.6875000000,2,0.6875000000,,,
|
||||
0.7187500000,2,0.7187500000,,,
|
||||
0.7500000000,3,0.7500000000,,,
|
||||
0.7812500000,3,0.7812500000,,,
|
||||
0.8125000000,3,0.8125000000,,,
|
||||
0.8437500000,3,0.8437500000,,,
|
||||
0.8750000000,3,0.8750000000,,,
|
||||
0.9062500000,3,0.9062500000,,,
|
||||
0.9375000000,3,0.9375000000,,,
|
||||
0.9687500000,3,0.9687500000,,,
|
||||
1.0000000000,4,1.0000000000,33024,1.0000000000,0.0000000000
|
||||
1.0312500000,4,1.0312500000,,,
|
||||
1.0625000000,4,1.0625000000,,,
|
||||
1.0937500000,4,1.0937500000,,,
|
||||
1.1250000000,4,1.1250000000,,,
|
||||
1.1562500000,4,1.1562500000,,,
|
||||
1.1875000000,4,1.1875000000,,,
|
||||
1.2187500000,4,1.2187500000,,,
|
||||
1.2500000000,5,1.2500000000,,,
|
||||
1.2812500000,5,1.2812500000,,,
|
||||
1.3125000000,5,1.3125000000,,,
|
||||
1.3437500000,5,1.3437500000,,,
|
||||
1.3750000000,5,1.3750000000,,,
|
||||
1.4062500000,5,1.4062500000,,,
|
||||
1.4375000000,5,1.4375000000,,,
|
||||
1.4687500000,5,1.4687500000,,,
|
||||
1.5000000000,6,1.5000000000,,,
|
||||
1.5312500000,6,1.5312500000,,,
|
||||
1.5625000000,6,1.5625000000,,,
|
||||
1.5937500000,6,1.5937500000,,,
|
||||
1.6250000000,6,1.6250000000,,,
|
||||
1.6562500000,6,1.6562500000,,,
|
||||
1.6875000000,6,1.6875000000,,,
|
||||
1.7187500000,6,1.7187500000,,,
|
||||
1.7500000000,7,1.7500000000,,,
|
||||
1.7812500000,7,1.7812500000,,,
|
||||
1.8125000000,7,1.8125000000,,,
|
||||
1.8437500000,7,1.8437500000,,,
|
||||
1.8750000000,7,1.8750000000,,,
|
||||
1.9062500000,7,1.9062500000,,,
|
||||
1.9375000000,7,1.9375000000,,,
|
||||
1.9687500000,7,1.9687500000,,,
|
||||
2.0000000000,8,2.0000000000,33024,2.0000000000,0.0000000000
|
||||
2.0312500000,8,2.0312500000,,,
|
||||
2.0625000000,8,2.0625000000,,,
|
||||
2.0937500000,8,2.0937500000,,,
|
||||
2.1250000000,8,2.1250000000,,,
|
||||
2.1562500000,8,2.1562500000,,,
|
||||
2.1875000000,8,2.1875000000,,,
|
||||
2.2187500000,8,2.2187500000,,,
|
||||
2.2500000000,9,2.2500000000,,,
|
||||
2.2812500000,9,2.2812500000,,,
|
||||
2.3125000000,9,2.3125000000,,,
|
||||
2.3437500000,9,2.3437500000,,,
|
||||
2.3750000000,9,2.3750000000,,,
|
||||
2.4062500000,9,2.4062500000,,,
|
||||
2.4375000000,9,2.4375000000,,,
|
||||
2.4687500000,9,2.4687500000,,,
|
||||
2.5000000000,10,2.5000000000,,,
|
||||
2.5312500000,10,2.5312500000,,,
|
||||
2.5625000000,10,2.5625000000,,,
|
||||
2.5937500000,10,2.5937500000,,,
|
||||
2.6250000000,10,2.6250000000,,,
|
||||
2.6562500000,10,2.6562500000,,,
|
||||
2.6875000000,10,2.6875000000,,,
|
||||
2.7187500000,10,2.7187500000,,,
|
||||
2.7500000000,11,2.7500000000,,,
|
||||
2.7812500000,11,2.7812500000,,,
|
||||
2.8125000000,11,2.8125000000,,,
|
||||
2.8437500000,11,2.8437500000,,,
|
||||
2.8750000000,11,2.8750000000,,,
|
||||
2.9062500000,11,2.9062500000,,,
|
||||
2.9375000000,11,2.9375000000,,,
|
||||
2.9687500000,11,2.9687500000,,,
|
||||
3.0000000000,12,3.0000000000,33024,3.0000000000,0.0000000000
|
||||
3.0312500000,12,3.0312500000,,,
|
||||
3.0625000000,12,3.0625000000,,,
|
||||
3.0937500000,12,3.0937500000,,,
|
||||
3.1250000000,12,3.1250000000,,,
|
||||
3.1562500000,12,3.1562500000,,,
|
||||
3.1875000000,12,3.1875000000,,,
|
||||
3.2187500000,12,3.2187500000,,,
|
||||
3.2500000000,13,3.2500000000,,,
|
||||
3.2812500000,13,3.2812500000,,,
|
||||
3.3125000000,13,3.3125000000,,,
|
||||
3.3437500000,13,3.3437500000,,,
|
||||
3.3750000000,13,3.3750000000,,,
|
||||
3.4062500000,13,3.4062500000,,,
|
||||
3.4375000000,13,3.4375000000,,,
|
||||
3.4687500000,13,3.4687500000,,,
|
||||
3.5000000000,14,3.5000000000,,,
|
||||
3.5312500000,14,3.5312500000,,,
|
||||
3.5625000000,14,3.5625000000,,,
|
||||
3.5937500000,14,3.5937500000,,,
|
||||
3.6250000000,14,3.6250000000,,,
|
||||
3.6562500000,14,3.6562500000,,,
|
||||
3.6875000000,14,3.6875000000,,,
|
||||
3.7187500000,14,3.7187500000,,,
|
||||
3.7500000000,15,3.7500000000,,,
|
||||
3.7812500000,15,3.7812500000,,,
|
||||
3.8125000000,15,3.8125000000,,,
|
||||
3.8437500000,15,3.8437500000,,,
|
||||
3.8750000000,15,3.8750000000,,,
|
||||
3.9062500000,15,3.9062500000,,,
|
||||
3.9375000000,15,3.9375000000,,,
|
||||
3.9687500000,15,3.9687500000,,,
|
||||
4.0000000000,16,4.0000000000,33024,4.0000000000,0.0000000000
|
||||
4.0312500000,16,4.0312500000,,,
|
||||
4.0625000000,16,4.0625000000,,,
|
||||
4.0937500000,16,4.0937500000,,,
|
||||
4.1250000000,16,4.1250000000,,,
|
||||
4.1562500000,16,4.1562500000,,,
|
||||
4.1875000000,16,4.1875000000,,,
|
||||
4.2187500000,16,4.2187500000,,,
|
||||
4.2500000000,17,4.2500000000,,,
|
||||
4.2812500000,17,4.2812500000,,,
|
||||
4.3125000000,17,4.3125000000,,,
|
||||
4.3437500000,17,4.3437500000,,,
|
||||
4.3750000000,17,4.3750000000,,,
|
||||
4.4062500000,17,4.4062500000,,,
|
||||
4.4375000000,17,4.4375000000,,,
|
||||
4.4687500000,17,4.4687500000,,,
|
||||
4.5000000000,18,4.5000000000,,,
|
||||
4.5312500000,18,4.5312500000,,,
|
||||
4.5625000000,18,4.5625000000,,,
|
||||
4.5937500000,18,4.5937500000,,,
|
||||
4.6250000000,18,4.6250000000,,,
|
||||
4.6562500000,18,4.6562500000,,,
|
||||
4.6875000000,18,4.6875000000,,,
|
||||
4.7187500000,18,4.7187500000,,,
|
||||
4.7500000000,19,4.7500000000,,,
|
||||
4.7812500000,19,4.7812500000,,,
|
||||
4.8125000000,19,4.8125000000,,,
|
||||
4.8437500000,19,4.8437500000,,,
|
||||
4.8750000000,19,4.8750000000,,,
|
||||
4.9062500000,19,4.9062500000,,,
|
||||
4.9375000000,19,4.9375000000,,,
|
||||
4.9687500000,19,4.9687500000,,,
|
||||
|
Masterarbeit/openvibe/sdk-master/unit-test/openvibe-module-csv/data/testCSVSignalWindowsEndlines.csv
Executable
+161
@@ -0,0 +1,161 @@
|
||||
Time:32Hz,Epoch,Time signal,Event Id,Event Date,Event Duration
|
||||
0.0000000000,0,0.0000000000,,,
|
||||
0.0312500000,0,0.0312500000,,,
|
||||
0.0625000000,0,0.0625000000,,,
|
||||
0.0937500000,0,0.0937500000,,,
|
||||
0.1250000000,0,0.1250000000,,,
|
||||
0.1562500000,0,0.1562500000,,,
|
||||
0.1875000000,0,0.1875000000,,,
|
||||
0.2187500000,0,0.2187500000,,,
|
||||
0.2500000000,1,0.2500000000,,,
|
||||
0.2812500000,1,0.2812500000,,,
|
||||
0.3125000000,1,0.3125000000,,,
|
||||
0.3437500000,1,0.3437500000,,,
|
||||
0.3750000000,1,0.3750000000,,,
|
||||
0.4062500000,1,0.4062500000,,,
|
||||
0.4375000000,1,0.4375000000,,,
|
||||
0.4687500000,1,0.4687500000,,,
|
||||
0.5000000000,2,0.5000000000,,,
|
||||
0.5312500000,2,0.5312500000,,,
|
||||
0.5625000000,2,0.5625000000,,,
|
||||
0.5937500000,2,0.5937500000,,,
|
||||
0.6250000000,2,0.6250000000,,,
|
||||
0.6562500000,2,0.6562500000,,,
|
||||
0.6875000000,2,0.6875000000,,,
|
||||
0.7187500000,2,0.7187500000,,,
|
||||
0.7500000000,3,0.7500000000,,,
|
||||
0.7812500000,3,0.7812500000,,,
|
||||
0.8125000000,3,0.8125000000,,,
|
||||
0.8437500000,3,0.8437500000,,,
|
||||
0.8750000000,3,0.8750000000,,,
|
||||
0.9062500000,3,0.9062500000,,,
|
||||
0.9375000000,3,0.9375000000,,,
|
||||
0.9687500000,3,0.9687500000,,,
|
||||
1.0000000000,4,1.0000000000,33024,1.0000000000,0.0000000000
|
||||
1.0312500000,4,1.0312500000,,,
|
||||
1.0625000000,4,1.0625000000,,,
|
||||
1.0937500000,4,1.0937500000,,,
|
||||
1.1250000000,4,1.1250000000,,,
|
||||
1.1562500000,4,1.1562500000,,,
|
||||
1.1875000000,4,1.1875000000,,,
|
||||
1.2187500000,4,1.2187500000,,,
|
||||
1.2500000000,5,1.2500000000,,,
|
||||
1.2812500000,5,1.2812500000,,,
|
||||
1.3125000000,5,1.3125000000,,,
|
||||
1.3437500000,5,1.3437500000,,,
|
||||
1.3750000000,5,1.3750000000,,,
|
||||
1.4062500000,5,1.4062500000,,,
|
||||
1.4375000000,5,1.4375000000,,,
|
||||
1.4687500000,5,1.4687500000,,,
|
||||
1.5000000000,6,1.5000000000,,,
|
||||
1.5312500000,6,1.5312500000,,,
|
||||
1.5625000000,6,1.5625000000,,,
|
||||
1.5937500000,6,1.5937500000,,,
|
||||
1.6250000000,6,1.6250000000,,,
|
||||
1.6562500000,6,1.6562500000,,,
|
||||
1.6875000000,6,1.6875000000,,,
|
||||
1.7187500000,6,1.7187500000,,,
|
||||
1.7500000000,7,1.7500000000,,,
|
||||
1.7812500000,7,1.7812500000,,,
|
||||
1.8125000000,7,1.8125000000,,,
|
||||
1.8437500000,7,1.8437500000,,,
|
||||
1.8750000000,7,1.8750000000,,,
|
||||
1.9062500000,7,1.9062500000,,,
|
||||
1.9375000000,7,1.9375000000,,,
|
||||
1.9687500000,7,1.9687500000,,,
|
||||
2.0000000000,8,2.0000000000,33024,2.0000000000,0.0000000000
|
||||
2.0312500000,8,2.0312500000,,,
|
||||
2.0625000000,8,2.0625000000,,,
|
||||
2.0937500000,8,2.0937500000,,,
|
||||
2.1250000000,8,2.1250000000,,,
|
||||
2.1562500000,8,2.1562500000,,,
|
||||
2.1875000000,8,2.1875000000,,,
|
||||
2.2187500000,8,2.2187500000,,,
|
||||
2.2500000000,9,2.2500000000,,,
|
||||
2.2812500000,9,2.2812500000,,,
|
||||
2.3125000000,9,2.3125000000,,,
|
||||
2.3437500000,9,2.3437500000,,,
|
||||
2.3750000000,9,2.3750000000,,,
|
||||
2.4062500000,9,2.4062500000,,,
|
||||
2.4375000000,9,2.4375000000,,,
|
||||
2.4687500000,9,2.4687500000,,,
|
||||
2.5000000000,10,2.5000000000,,,
|
||||
2.5312500000,10,2.5312500000,,,
|
||||
2.5625000000,10,2.5625000000,,,
|
||||
2.5937500000,10,2.5937500000,,,
|
||||
2.6250000000,10,2.6250000000,,,
|
||||
2.6562500000,10,2.6562500000,,,
|
||||
2.6875000000,10,2.6875000000,,,
|
||||
2.7187500000,10,2.7187500000,,,
|
||||
2.7500000000,11,2.7500000000,,,
|
||||
2.7812500000,11,2.7812500000,,,
|
||||
2.8125000000,11,2.8125000000,,,
|
||||
2.8437500000,11,2.8437500000,,,
|
||||
2.8750000000,11,2.8750000000,,,
|
||||
2.9062500000,11,2.9062500000,,,
|
||||
2.9375000000,11,2.9375000000,,,
|
||||
2.9687500000,11,2.9687500000,,,
|
||||
3.0000000000,12,3.0000000000,33024,3.0000000000,0.0000000000
|
||||
3.0312500000,12,3.0312500000,,,
|
||||
3.0625000000,12,3.0625000000,,,
|
||||
3.0937500000,12,3.0937500000,,,
|
||||
3.1250000000,12,3.1250000000,,,
|
||||
3.1562500000,12,3.1562500000,,,
|
||||
3.1875000000,12,3.1875000000,,,
|
||||
3.2187500000,12,3.2187500000,,,
|
||||
3.2500000000,13,3.2500000000,,,
|
||||
3.2812500000,13,3.2812500000,,,
|
||||
3.3125000000,13,3.3125000000,,,
|
||||
3.3437500000,13,3.3437500000,,,
|
||||
3.3750000000,13,3.3750000000,,,
|
||||
3.4062500000,13,3.4062500000,,,
|
||||
3.4375000000,13,3.4375000000,,,
|
||||
3.4687500000,13,3.4687500000,,,
|
||||
3.5000000000,14,3.5000000000,,,
|
||||
3.5312500000,14,3.5312500000,,,
|
||||
3.5625000000,14,3.5625000000,,,
|
||||
3.5937500000,14,3.5937500000,,,
|
||||
3.6250000000,14,3.6250000000,,,
|
||||
3.6562500000,14,3.6562500000,,,
|
||||
3.6875000000,14,3.6875000000,,,
|
||||
3.7187500000,14,3.7187500000,,,
|
||||
3.7500000000,15,3.7500000000,,,
|
||||
3.7812500000,15,3.7812500000,,,
|
||||
3.8125000000,15,3.8125000000,,,
|
||||
3.8437500000,15,3.8437500000,,,
|
||||
3.8750000000,15,3.8750000000,,,
|
||||
3.9062500000,15,3.9062500000,,,
|
||||
3.9375000000,15,3.9375000000,,,
|
||||
3.9687500000,15,3.9687500000,,,
|
||||
4.0000000000,16,4.0000000000,33024,4.0000000000,0.0000000000
|
||||
4.0312500000,16,4.0312500000,,,
|
||||
4.0625000000,16,4.0625000000,,,
|
||||
4.0937500000,16,4.0937500000,,,
|
||||
4.1250000000,16,4.1250000000,,,
|
||||
4.1562500000,16,4.1562500000,,,
|
||||
4.1875000000,16,4.1875000000,,,
|
||||
4.2187500000,16,4.2187500000,,,
|
||||
4.2500000000,17,4.2500000000,,,
|
||||
4.2812500000,17,4.2812500000,,,
|
||||
4.3125000000,17,4.3125000000,,,
|
||||
4.3437500000,17,4.3437500000,,,
|
||||
4.3750000000,17,4.3750000000,,,
|
||||
4.4062500000,17,4.4062500000,,,
|
||||
4.4375000000,17,4.4375000000,,,
|
||||
4.4687500000,17,4.4687500000,,,
|
||||
4.5000000000,18,4.5000000000,,,
|
||||
4.5312500000,18,4.5312500000,,,
|
||||
4.5625000000,18,4.5625000000,,,
|
||||
4.5937500000,18,4.5937500000,,,
|
||||
4.6250000000,18,4.6250000000,,,
|
||||
4.6562500000,18,4.6562500000,,,
|
||||
4.6875000000,18,4.6875000000,,,
|
||||
4.7187500000,18,4.7187500000,,,
|
||||
4.7500000000,19,4.7500000000,,,
|
||||
4.7812500000,19,4.7812500000,,,
|
||||
4.8125000000,19,4.8125000000,,,
|
||||
4.8437500000,19,4.8437500000,,,
|
||||
4.8750000000,19,4.8750000000,,,
|
||||
4.9062500000,19,4.9062500000,,,
|
||||
4.9375000000,19,4.9375000000,,,
|
||||
4.9687500000,19,4.9687500000,,,
|
||||
|
Executable
+8
@@ -0,0 +1,8 @@
|
||||
Time:8Hz,Epoch,O1,O2,Pz,P1,P2,Event Id,Event Date,Event Duration
|
||||
0.0000000000,0,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.1250000000,0,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.2500000000,0,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,35000,0.2500000000,0.0000000000
|
||||
0.3750000000,0,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.5000000000,1,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.6250000000,1,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.7500000000,1,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,35000,0.7500000000,0.0000000000
|
||||
|
Executable
+9
@@ -0,0 +1,9 @@
|
||||
Time:8Hz,Epoch,O1,O2,Pz,P1,P2,Event Id,Event Date,Event Duration
|
||||
0.0000000000,0,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.1250000000,0,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.2500000000,0,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.3750000000,0,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.5000000000,1,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.6250000000,1,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.7500000000,1,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
0.8750000000,1,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
|
Executable
|
|
Executable
+1
@@ -0,0 +1 @@
|
||||
Time:8Hz,Epoch,O1,O2,Pz,P1,P2,Event Id,Event Date,Event Duration
|
||||
|
Executable
+801
@@ -0,0 +1,801 @@
|
||||
Time:8Hz,Epoch,O1,O2,Pz,P1,P2,Event Id,Event Date,Event Duration
|
||||
0.0000000000,0,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
0.1250000000,0,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
0.2500000000,0,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
0.3750000000,0,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
0.5000000000,1,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
0.6250000000,1,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
0.7500000000,1,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
0.8750000000,1,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
1.0000000000,2,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
1.1250000000,2,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
1.2500000000,2,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
1.3750000000,2,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
1.5000000000,3,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
1.6250000000,3,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
1.7500000000,3,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
1.8750000000,3,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
2.0000000000,4,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
2.1250000000,4,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
2.2500000000,4,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
2.3750000000,4,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
2.5000000000,5,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
2.6250000000,5,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
2.7500000000,5,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
2.8750000000,5,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
3.0000000000,6,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
3.1250000000,6,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
3.2500000000,6,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
3.3750000000,6,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
3.5000000000,7,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
3.6250000000,7,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
3.7500000000,7,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
3.8750000000,7,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
4.0000000000,8,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
4.1250000000,8,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
4.2500000000,8,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
4.3750000000,8,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
4.5000000000,9,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
4.6250000000,9,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
4.7500000000,9,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
4.8750000000,9,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
5.0000000000,10,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
5.1250000000,10,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
5.2500000000,10,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
5.3750000000,10,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
5.5000000000,11,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
5.6250000000,11,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
5.7500000000,11,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
5.8750000000,11,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
6.0000000000,12,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
6.1250000000,12,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
6.2500000000,12,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
6.3750000000,12,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
6.5000000000,13,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
6.6250000000,13,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
6.7500000000,13,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
6.8750000000,13,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
7.0000000000,14,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
7.1250000000,14,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
7.2500000000,14,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
7.3750000000,14,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
7.5000000000,15,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
7.6250000000,15,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
7.7500000000,15,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
7.8750000000,15,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
8.0000000000,16,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
8.1250000000,16,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
8.2500000000,16,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
8.3750000000,16,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
8.5000000000,17,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
8.6250000000,17,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
8.7500000000,17,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
8.8750000000,17,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
9.0000000000,18,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
9.1250000000,18,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
9.2500000000,18,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
9.3750000000,18,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
9.5000000000,19,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
9.6250000000,19,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
9.7500000000,19,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
9.8750000000,19,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
10.0000000000,20,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
10.1250000000,20,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
10.2500000000,20,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
10.3750000000,20,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
10.5000000000,21,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
10.6250000000,21,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
10.7500000000,21,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
10.8750000000,21,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
11.0000000000,22,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
11.1250000000,22,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
11.2500000000,22,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
11.3750000000,22,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
11.5000000000,23,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
11.6250000000,23,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
11.7500000000,23,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
11.8750000000,23,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
12.0000000000,24,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
12.1250000000,24,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
12.2500000000,24,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
12.3750000000,24,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
12.5000000000,25,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
12.6250000000,25,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
12.7500000000,25,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
12.8750000000,25,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
13.0000000000,26,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
13.1250000000,26,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
13.2500000000,26,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
13.3750000000,26,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
13.5000000000,27,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
13.6250000000,27,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
13.7500000000,27,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
13.8750000000,27,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
14.0000000000,28,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
14.1250000000,28,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
14.2500000000,28,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
14.3750000000,28,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
14.5000000000,29,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
14.6250000000,29,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
14.7500000000,29,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
14.8750000000,29,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
15.0000000000,30,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
15.1250000000,30,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
15.2500000000,30,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
15.3750000000,30,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
15.5000000000,31,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
15.6250000000,31,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
15.7500000000,31,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
15.8750000000,31,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
16.0000000000,32,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
16.1250000000,32,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
16.2500000000,32,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
16.3750000000,32,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
16.5000000000,33,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
16.6250000000,33,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
16.7500000000,33,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
16.8750000000,33,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
17.0000000000,34,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
17.1250000000,34,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
17.2500000000,34,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
17.3750000000,34,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
17.5000000000,35,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
17.6250000000,35,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
17.7500000000,35,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
17.8750000000,35,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
18.0000000000,36,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
18.1250000000,36,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
18.2500000000,36,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
18.3750000000,36,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
18.5000000000,37,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
18.6250000000,37,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
18.7500000000,37,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
18.8750000000,37,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
19.0000000000,38,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
19.1250000000,38,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
19.2500000000,38,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
19.3750000000,38,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
19.5000000000,39,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
19.6250000000,39,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
19.7500000000,39,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
19.8750000000,39,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
20.0000000000,40,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
20.1250000000,40,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
20.2500000000,40,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
20.3750000000,40,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
20.5000000000,41,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
20.6250000000,41,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
20.7500000000,41,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
20.8750000000,41,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
21.0000000000,42,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
21.1250000000,42,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
21.2500000000,42,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
21.3750000000,42,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
21.5000000000,43,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
21.6250000000,43,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
21.7500000000,43,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
21.8750000000,43,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
22.0000000000,44,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
22.1250000000,44,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
22.2500000000,44,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
22.3750000000,44,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
22.5000000000,45,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
22.6250000000,45,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
22.7500000000,45,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
22.8750000000,45,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
23.0000000000,46,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
23.1250000000,46,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
23.2500000000,46,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
23.3750000000,46,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
23.5000000000,47,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
23.6250000000,47,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
23.7500000000,47,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
23.8750000000,47,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
24.0000000000,48,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
24.1250000000,48,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
24.2500000000,48,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
24.3750000000,48,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
24.5000000000,49,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
24.6250000000,49,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
24.7500000000,49,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
24.8750000000,49,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
25.0000000000,50,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
25.1250000000,50,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
25.2500000000,50,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
25.3750000000,50,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
25.5000000000,51,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
25.6250000000,51,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
25.7500000000,51,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
25.8750000000,51,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
26.0000000000,52,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
26.1250000000,52,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
26.2500000000,52,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
26.3750000000,52,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
26.5000000000,53,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
26.6250000000,53,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
26.7500000000,53,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
26.8750000000,53,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
27.0000000000,54,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
27.1250000000,54,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
27.2500000000,54,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
27.3750000000,54,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
27.5000000000,55,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
27.6250000000,55,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
27.7500000000,55,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
27.8750000000,55,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
28.0000000000,56,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
28.1250000000,56,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
28.2500000000,56,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
28.3750000000,56,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
28.5000000000,57,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
28.6250000000,57,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
28.7500000000,57,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
28.8750000000,57,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
29.0000000000,58,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
29.1250000000,58,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
29.2500000000,58,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
29.3750000000,58,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
29.5000000000,59,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
29.6250000000,59,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
29.7500000000,59,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
29.8750000000,59,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
30.0000000000,60,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
30.1250000000,60,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
30.2500000000,60,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
30.3750000000,60,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
30.5000000000,61,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
30.6250000000,61,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
30.7500000000,61,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
30.8750000000,61,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
31.0000000000,62,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
31.1250000000,62,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
31.2500000000,62,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
31.3750000000,62,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
31.5000000000,63,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
31.6250000000,63,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
31.7500000000,63,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
31.8750000000,63,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
32.0000000000,64,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
32.1250000000,64,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
32.2500000000,64,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
32.3750000000,64,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
32.5000000000,65,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
32.6250000000,65,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
32.7500000000,65,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
32.8750000000,65,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
33.0000000000,66,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
33.1250000000,66,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
33.2500000000,66,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
33.3750000000,66,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
33.5000000000,67,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
33.6250000000,67,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
33.7500000000,67,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
33.8750000000,67,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
34.0000000000,68,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
34.1250000000,68,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
34.2500000000,68,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
34.3750000000,68,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
34.5000000000,69,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
34.6250000000,69,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
34.7500000000,69,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
34.8750000000,69,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
35.0000000000,70,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
35.1250000000,70,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
35.2500000000,70,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
35.3750000000,70,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
35.5000000000,71,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
35.6250000000,71,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
35.7500000000,71,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
35.8750000000,71,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
36.0000000000,72,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
36.1250000000,72,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
36.2500000000,72,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
36.3750000000,72,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
36.5000000000,73,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
36.6250000000,73,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
36.7500000000,73,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
36.8750000000,73,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
37.0000000000,74,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
37.1250000000,74,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
37.2500000000,74,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
37.3750000000,74,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
37.5000000000,75,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
37.6250000000,75,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
37.7500000000,75,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
37.8750000000,75,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
38.0000000000,76,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
38.1250000000,76,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
38.2500000000,76,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
38.3750000000,76,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
38.5000000000,77,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
38.6250000000,77,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
38.7500000000,77,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
38.8750000000,77,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
39.0000000000,78,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
39.1250000000,78,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
39.2500000000,78,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
39.3750000000,78,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
39.5000000000,79,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
39.6250000000,79,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
39.7500000000,79,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
39.8750000000,79,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
40.0000000000,80,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
40.1250000000,80,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
40.2500000000,80,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
40.3750000000,80,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
40.5000000000,81,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
40.6250000000,81,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
40.7500000000,81,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
40.8750000000,81,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
41.0000000000,82,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
41.1250000000,82,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
41.2500000000,82,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
41.3750000000,82,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
41.5000000000,83,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
41.6250000000,83,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
41.7500000000,83,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
41.8750000000,83,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
42.0000000000,84,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
42.1250000000,84,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
42.2500000000,84,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
42.3750000000,84,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
42.5000000000,85,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
42.6250000000,85,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
42.7500000000,85,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
42.8750000000,85,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
43.0000000000,86,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
43.1250000000,86,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
43.2500000000,86,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
43.3750000000,86,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
43.5000000000,87,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
43.6250000000,87,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
43.7500000000,87,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
43.8750000000,87,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
44.0000000000,88,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
44.1250000000,88,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
44.2500000000,88,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
44.3750000000,88,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
44.5000000000,89,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
44.6250000000,89,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
44.7500000000,89,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
44.8750000000,89,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
45.0000000000,90,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
45.1250000000,90,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
45.2500000000,90,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
45.3750000000,90,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
45.5000000000,91,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
45.6250000000,91,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
45.7500000000,91,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
45.8750000000,91,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
46.0000000000,92,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
46.1250000000,92,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
46.2500000000,92,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
46.3750000000,92,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
46.5000000000,93,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
46.6250000000,93,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
46.7500000000,93,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
46.8750000000,93,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
47.0000000000,94,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
47.1250000000,94,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
47.2500000000,94,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
47.3750000000,94,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
47.5000000000,95,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
47.6250000000,95,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
47.7500000000,95,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
47.8750000000,95,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
48.0000000000,96,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
48.1250000000,96,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
48.2500000000,96,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
48.3750000000,96,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
48.5000000000,97,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
48.6250000000,97,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
48.7500000000,97,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
48.8750000000,97,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
49.0000000000,98,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
49.1250000000,98,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
49.2500000000,98,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
49.3750000000,98,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
49.5000000000,99,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
49.6250000000,99,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
49.7500000000,99,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
49.8750000000,99,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
50.0000000000,100,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
50.1250000000,100,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
50.2500000000,100,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
50.3750000000,100,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
50.5000000000,101,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
50.6250000000,101,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
50.7500000000,101,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
50.8750000000,101,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
51.0000000000,102,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
51.1250000000,102,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
51.2500000000,102,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
51.3750000000,102,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
51.5000000000,103,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
51.6250000000,103,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
51.7500000000,103,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
51.8750000000,103,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
52.0000000000,104,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
52.1250000000,104,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
52.2500000000,104,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
52.3750000000,104,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
52.5000000000,105,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
52.6250000000,105,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
52.7500000000,105,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
52.8750000000,105,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
53.0000000000,106,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
53.1250000000,106,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
53.2500000000,106,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
53.3750000000,106,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
53.5000000000,107,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
53.6250000000,107,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
53.7500000000,107,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
53.8750000000,107,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
54.0000000000,108,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
54.1250000000,108,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
54.2500000000,108,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
54.3750000000,108,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
54.5000000000,109,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
54.6250000000,109,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
54.7500000000,109,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
54.8750000000,109,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
55.0000000000,110,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
55.1250000000,110,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
55.2500000000,110,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
55.3750000000,110,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
55.5000000000,111,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
55.6250000000,111,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
55.7500000000,111,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
55.8750000000,111,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
56.0000000000,112,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
56.1250000000,112,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
56.2500000000,112,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
56.3750000000,112,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
56.5000000000,113,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
56.6250000000,113,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
56.7500000000,113,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
56.8750000000,113,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
57.0000000000,114,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
57.1250000000,114,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
57.2500000000,114,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
57.3750000000,114,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
57.5000000000,115,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
57.6250000000,115,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
57.7500000000,115,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
57.8750000000,115,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
58.0000000000,116,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
58.1250000000,116,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
58.2500000000,116,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
58.3750000000,116,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
58.5000000000,117,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
58.6250000000,117,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
58.7500000000,117,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
58.8750000000,117,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
59.0000000000,118,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
59.1250000000,118,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
59.2500000000,118,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
59.3750000000,118,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
59.5000000000,119,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
59.6250000000,119,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
59.7500000000,119,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
59.8750000000,119,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
60.0000000000,120,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
60.1250000000,120,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
60.2500000000,120,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
60.3750000000,120,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
60.5000000000,121,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
60.6250000000,121,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
60.7500000000,121,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
60.8750000000,121,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
61.0000000000,122,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
61.1250000000,122,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
61.2500000000,122,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
61.3750000000,122,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
61.5000000000,123,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
61.6250000000,123,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
61.7500000000,123,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
61.8750000000,123,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
62.0000000000,124,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
62.1250000000,124,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
62.2500000000,124,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
62.3750000000,124,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
62.5000000000,125,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
62.6250000000,125,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
62.7500000000,125,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
62.8750000000,125,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
63.0000000000,126,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
63.1250000000,126,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
63.2500000000,126,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
63.3750000000,126,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
63.5000000000,127,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
63.6250000000,127,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
63.7500000000,127,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
63.8750000000,127,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
64.0000000000,128,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
64.1250000000,128,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
64.2500000000,128,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
64.3750000000,128,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
64.5000000000,129,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
64.6250000000,129,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
64.7500000000,129,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
64.8750000000,129,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
65.0000000000,130,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
65.1250000000,130,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
65.2500000000,130,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
65.3750000000,130,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
65.5000000000,131,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
65.6250000000,131,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
65.7500000000,131,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
65.8750000000,131,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
66.0000000000,132,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
66.1250000000,132,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
66.2500000000,132,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
66.3750000000,132,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
66.5000000000,133,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
66.6250000000,133,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
66.7500000000,133,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
66.8750000000,133,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
67.0000000000,134,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
67.1250000000,134,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
67.2500000000,134,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
67.3750000000,134,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
67.5000000000,135,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
67.6250000000,135,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
67.7500000000,135,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
67.8750000000,135,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
68.0000000000,136,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
68.1250000000,136,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
68.2500000000,136,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
68.3750000000,136,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
68.5000000000,137,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
68.6250000000,137,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
68.7500000000,137,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
68.8750000000,137,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
69.0000000000,138,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
69.1250000000,138,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
69.2500000000,138,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
69.3750000000,138,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
69.5000000000,139,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
69.6250000000,139,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
69.7500000000,139,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
69.8750000000,139,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
70.0000000000,140,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
70.1250000000,140,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
70.2500000000,140,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
70.3750000000,140,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
70.5000000000,141,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
70.6250000000,141,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
70.7500000000,141,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
70.8750000000,141,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
71.0000000000,142,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
71.1250000000,142,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
71.2500000000,142,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
71.3750000000,142,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
71.5000000000,143,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
71.6250000000,143,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
71.7500000000,143,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
71.8750000000,143,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
72.0000000000,144,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
72.1250000000,144,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
72.2500000000,144,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
72.3750000000,144,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
72.5000000000,145,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
72.6250000000,145,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
72.7500000000,145,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
72.8750000000,145,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
73.0000000000,146,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
73.1250000000,146,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
73.2500000000,146,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
73.3750000000,146,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
73.5000000000,147,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
73.6250000000,147,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
73.7500000000,147,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
73.8750000000,147,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
74.0000000000,148,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
74.1250000000,148,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
74.2500000000,148,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
74.3750000000,148,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
74.5000000000,149,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
74.6250000000,149,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
74.7500000000,149,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
74.8750000000,149,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
75.0000000000,150,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
75.1250000000,150,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
75.2500000000,150,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
75.3750000000,150,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
75.5000000000,151,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
75.6250000000,151,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
75.7500000000,151,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
75.8750000000,151,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
76.0000000000,152,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
76.1250000000,152,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
76.2500000000,152,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
76.3750000000,152,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
76.5000000000,153,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
76.6250000000,153,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
76.7500000000,153,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
76.8750000000,153,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
77.0000000000,154,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
77.1250000000,154,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
77.2500000000,154,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
77.3750000000,154,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
77.5000000000,155,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
77.6250000000,155,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
77.7500000000,155,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
77.8750000000,155,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
78.0000000000,156,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
78.1250000000,156,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
78.2500000000,156,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
78.3750000000,156,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
78.5000000000,157,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
78.6250000000,157,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
78.7500000000,157,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
78.8750000000,157,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
79.0000000000,158,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
79.1250000000,158,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
79.2500000000,158,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
79.3750000000,158,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
79.5000000000,159,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
79.6250000000,159,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
79.7500000000,159,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
79.8750000000,159,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
80.0000000000,160,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
80.1250000000,160,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
80.2500000000,160,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
80.3750000000,160,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
80.5000000000,161,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
80.6250000000,161,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
80.7500000000,161,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
80.8750000000,161,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
81.0000000000,162,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
81.1250000000,162,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
81.2500000000,162,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
81.3750000000,162,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
81.5000000000,163,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
81.6250000000,163,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
81.7500000000,163,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
81.8750000000,163,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
82.0000000000,164,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
82.1250000000,164,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
82.2500000000,164,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
82.3750000000,164,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
82.5000000000,165,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
82.6250000000,165,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
82.7500000000,165,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
82.8750000000,165,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
83.0000000000,166,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
83.1250000000,166,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
83.2500000000,166,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
83.3750000000,166,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
83.5000000000,167,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
83.6250000000,167,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
83.7500000000,167,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
83.8750000000,167,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
84.0000000000,168,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
84.1250000000,168,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
84.2500000000,168,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
84.3750000000,168,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
84.5000000000,169,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
84.6250000000,169,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
84.7500000000,169,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
84.8750000000,169,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
85.0000000000,170,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
85.1250000000,170,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
85.2500000000,170,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
85.3750000000,170,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
85.5000000000,171,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
85.6250000000,171,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
85.7500000000,171,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
85.8750000000,171,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
86.0000000000,172,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
86.1250000000,172,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
86.2500000000,172,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
86.3750000000,172,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
86.5000000000,173,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
86.6250000000,173,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
86.7500000000,173,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
86.8750000000,173,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
87.0000000000,174,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
87.1250000000,174,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
87.2500000000,174,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
87.3750000000,174,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
87.5000000000,175,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
87.6250000000,175,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
87.7500000000,175,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
87.8750000000,175,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
88.0000000000,176,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
88.1250000000,176,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
88.2500000000,176,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
88.3750000000,176,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
88.5000000000,177,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
88.6250000000,177,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
88.7500000000,177,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
88.8750000000,177,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
89.0000000000,178,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
89.1250000000,178,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
89.2500000000,178,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
89.3750000000,178,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
89.5000000000,179,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
89.6250000000,179,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
89.7500000000,179,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
89.8750000000,179,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
90.0000000000,180,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
90.1250000000,180,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
90.2500000000,180,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
90.3750000000,180,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
90.5000000000,181,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
90.6250000000,181,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
90.7500000000,181,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
90.8750000000,181,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
91.0000000000,182,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
91.1250000000,182,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
91.2500000000,182,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
91.3750000000,182,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
91.5000000000,183,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
91.6250000000,183,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
91.7500000000,183,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
91.8750000000,183,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
92.0000000000,184,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
92.1250000000,184,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
92.2500000000,184,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
92.3750000000,184,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
92.5000000000,185,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
92.6250000000,185,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
92.7500000000,185,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
92.8750000000,185,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
93.0000000000,186,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
93.1250000000,186,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
93.2500000000,186,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
93.3750000000,186,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
93.5000000000,187,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
93.6250000000,187,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
93.7500000000,187,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
93.8750000000,187,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
94.0000000000,188,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
94.1250000000,188,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
94.2500000000,188,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
94.3750000000,188,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
94.5000000000,189,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
94.6250000000,189,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
94.7500000000,189,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
94.8750000000,189,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
95.0000000000,190,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
95.1250000000,190,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
95.2500000000,190,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
95.3750000000,190,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
95.5000000000,191,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
95.6250000000,191,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
95.7500000000,191,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
95.8750000000,191,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
96.0000000000,192,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
96.1250000000,192,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
96.2500000000,192,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
96.3750000000,192,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
96.5000000000,193,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
96.6250000000,193,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
96.7500000000,193,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
96.8750000000,193,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
97.0000000000,194,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
97.1250000000,194,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
97.2500000000,194,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
97.3750000000,194,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
97.5000000000,195,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
97.6250000000,195,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
97.7500000000,195,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
97.8750000000,195,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
98.0000000000,196,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
98.1250000000,196,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
98.2500000000,196,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
98.3750000000,196,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
98.5000000000,197,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
98.6250000000,197,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
98.7500000000,197,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
98.8750000000,197,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
99.0000000000,198,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
99.1250000000,198,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
99.2500000000,198,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
99.3750000000,198,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
99.5000000000,199,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
99.6250000000,199,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
99.7500000000,199,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
99.8750000000,199,-20.2000000000,-10.1000000000,0.0000000000,10.1000000000,20.2000000000,,,
|
||||
|
Executable
+3
@@ -0,0 +1,3 @@
|
||||
Time:8Hz,Epoch,O1,O2,Pz,P1,P2,Event Id,Event Date,Event Duration
|
||||
1.0000000000,2,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,35000,1.0000000000,0.0000000000
|
||||
1.1250000000,2,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,
|
||||
|
Executable
+11
@@ -0,0 +1,11 @@
|
||||
Time:8Hz,O1,O2,Pz,P1,P2,Event Id,Event Date,Event Duration
|
||||
0.00000,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
0.12500,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
0.25000,-20.20,-10.10,0.0,10.10,20.20,32000:32010,0.25000:1.00000,0:0
|
||||
0.37500,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
0.50000,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
0.62500,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
0.75000,-20.20,-10.10,0.0,10.10,20.20,35000,0.75250,0
|
||||
0.87500,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
1.00000,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
1.12500,-20.20,-10.10,0.0,10.10,20.20,,,
|
||||
|
Executable
+13
@@ -0,0 +1,13 @@
|
||||
Time:2x64:128,End Time,O1:0,O1:1,O1:2,O1:3,O1:4,O1:5,O1:6,O1:7,O1:8,O1:9,O1:10,O1:11,O1:12,O1:13,O1:14,O1:15,O1:16,O1:17,O1:18,O1:19,O1:20,O1:21,O1:22,O1:23,O1:24,O1:25,O1:26,O1:27,O1:28,O1:29,O1:30,O1:31,O1:32,O1:33,O1:34,O1:35,O1:36,O1:37,O1:38,O1:39,O1:40,O1:41,O1:42,O1:43,O1:44,O1:45,O1:46,O1:47,O1:48,O1:49,O1:50,O1:51,O1:52,O1:53,O1:54,O1:55,O1:56,O1:57,O1:58,O1:59,O1:60,O1:61,O1:62,O1:63,O2:0,O2:1,O2:2,O2:3,O2:4,O2:5,O2:6,O2:7,O2:8,O2:9,O2:10,O2:11,O2:12,O2:13,O2:14,O2:15,O2:16,O2:17,O2:18,O2:19,O2:20,O2:21,O2:22,O2:23,O2:24,O2:25,O2:26,O2:27,O2:28,O2:29,O2:30,O2:31,O2:32,O2:33,O2:34,O2:35,O2:36,O2:37,O2:38,O2:39,O2:40,O2:41,O2:42,O2:43,O2:44,O2:45,O2:46,O2:47,O2:48,O2:49,O2:50,O2:51,O2:52,O2:53,O2:54,O2:55,O2:56,O2:57,O2:58,O2:59,O2:60,O2:61,O2:62,O2:63,Event Id,Event Date,Event Duration
|
||||
0.00000,1.00000,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
0.12500,1.12500,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
0.25000,1.25000,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
0.37500,1.37500,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
0.50000,1.50000,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
0.62500,1.62500,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
0.75000,1.75000,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
0.87500,1.87500,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
1.00000,2.00000,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
1.12500,2.12500,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
1.25000,2.25000,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
1.37500,2.37500,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,,,
|
||||
|
Executable
+3
@@ -0,0 +1,3 @@
|
||||
Time:2x64:256,End Time,O1:0.000000,O1:1.000000,O1:2.000000,O1:3.000000,O1:4.000000,O1:5.000000,O1:6.000000,O1:7.000000,O1:8.000000,O1:9.000000,O1:10.000000,O1:11.000000,O1:12.000000,O1:13.000000,O1:14.000000,O1:15.000000,O1:16.000000,O1:17.000000,O1:18.000000,O1:19.000000,O1:20.000000,O1:21.000000,O1:22.000000,O1:23.000000,O1:24.000000,O1:25.000000,O1:26.000000,O1:27.000000,O1:28.000000,O1:29.000000,O1:30.000000,O1:31.000000,O1:32.000000,O1:33.000000,O1:34.000000,O1:35.000000,O1:36.000000,O1:37.000000,O1:38.000000,O1:39.000000,O1:40.000000,O1:41.000000,O1:42.000000,O1:43.000000,O1:44.000000,O1:45.000000,O1:46.000000,O1:47.000000,O1:48.000000,O1:49.000000,O1:50.000000,O1:51.000000,O1:52.000000,O1:53.000000,O1:54.000000,O1:55.000000,O1:56.000000,O1:57.000000,O1:58.000000,O1:59.000000,O1:60.000000,O1:61.000000,O1:62.000000,O1:63.000000,O2:0.000000,O2:1.000000,O2:2.000000,O2:3.000000,O2:4.000000,O2:5.000000,O2:6.000000,O2:7.000000,O2:8.000000,O2:9.000000,O2:10.000000,O2:11.000000,O2:12.000000,O2:13.000000,O2:14.000000,O2:15.000000,O2:16.000000,O2:17.000000,O2:18.000000,O2:19.000000,O2:20.000000,O2:21.000000,O2:22.000000,O2:23.000000,O2:24.000000,O2:25.000000,O2:26.000000,O2:27.000000,O2:28.000000,O2:29.000000,O2:30.000000,O2:31.000000,O2:32.000000,O2:33.000000,O2:34.000000,O2:35.000000,O2:36.000000,O2:37.000000,O2:38.000000,O2:39.000000,O2:40.000000,O2:41.000000,O2:42.000000,O2:43.000000,O2:44.000000,O2:45.000000,O2:46.000000,O2:47.000000,O2:48.000000,O2:49.000000,O2:50.000000,O2:51.000000,O2:52.000000,O2:53.000000,O2:54.000000,O2:55.000000,O2:56.000000,O2:57.000000,O2:58.000000,O2:59.000000,O2:60.000000,O2:61.000000,O2:62.000000,O2:63.000000,Event Id,Event Date,Event Duration
|
||||
0.0000000000,1.0000000000,-64.0000000000,-63.0000000000,-62.0000000000,-61.0000000000,-60.0000000000,-59.0000000000,-58.0000000000,-57.0000000000,-56.0000000000,-55.0000000000,-54.0000000000,-53.0000000000,-52.0000000000,-51.0000000000,-50.0000000000,-49.0000000000,-48.0000000000,-47.0000000000,-46.0000000000,-45.0000000000,-44.0000000000,-43.0000000000,-42.0000000000,-41.0000000000,-40.0000000000,-39.0000000000,-38.0000000000,-37.0000000000,-36.0000000000,-35.0000000000,-34.0000000000,-33.0000000000,-32.0000000000,-31.0000000000,-30.0000000000,-29.0000000000,-28.0000000000,-27.0000000000,-26.0000000000,-25.0000000000,-24.0000000000,-23.0000000000,-22.0000000000,-21.0000000000,-20.0000000000,-19.0000000000,-18.0000000000,-17.0000000000,-16.0000000000,-15.0000000000,-14.0000000000,-13.0000000000,-12.0000000000,-11.0000000000,-10.0000000000,-9.0000000000,-8.0000000000,-7.0000000000,-6.0000000000,-5.0000000000,-4.0000000000,-3.0000000000,-2.0000000000,-1.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,35001:35001,0.5000000000:0.7500000000,1.0000000000:1.0000000000
|
||||
0.1250000000,1.1250000000,-64.0000000000,-63.0000000000,-62.0000000000,-61.0000000000,-60.0000000000,-59.0000000000,-58.0000000000,-57.0000000000,-56.0000000000,-55.0000000000,-54.0000000000,-53.0000000000,-52.0000000000,-51.0000000000,-50.0000000000,-49.0000000000,-48.0000000000,-47.0000000000,-46.0000000000,-45.0000000000,-44.0000000000,-43.0000000000,-42.0000000000,-41.0000000000,-40.0000000000,-39.0000000000,-38.0000000000,-37.0000000000,-36.0000000000,-35.0000000000,-34.0000000000,-33.0000000000,-32.0000000000,-31.0000000000,-30.0000000000,-29.0000000000,-28.0000000000,-27.0000000000,-26.0000000000,-25.0000000000,-24.0000000000,-23.0000000000,-22.0000000000,-21.0000000000,-20.0000000000,-19.0000000000,-18.0000000000,-17.0000000000,-16.0000000000,-15.0000000000,-14.0000000000,-13.0000000000,-12.0000000000,-11.0000000000,-10.0000000000,-9.0000000000,-8.0000000000,-7.0000000000,-6.0000000000,-5.0000000000,-4.0000000000,-3.0000000000,-2.0000000000,-1.0000000000,0.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,8.0000000000,9.0000000000,10.0000000000,11.0000000000,12.0000000000,13.0000000000,14.0000000000,15.0000000000,16.0000000000,17.0000000000,18.0000000000,19.0000000000,20.0000000000,21.0000000000,22.0000000000,23.0000000000,24.0000000000,25.0000000000,26.0000000000,27.0000000000,28.0000000000,29.0000000000,30.0000000000,31.0000000000,32.0000000000,33.0000000000,34.0000000000,35.0000000000,36.0000000000,37.0000000000,38.0000000000,39.0000000000,40.0000000000,41.0000000000,42.0000000000,43.0000000000,44.0000000000,45.0000000000,46.0000000000,47.0000000000,48.0000000000,49.0000000000,50.0000000000,51.0000000000,52.0000000000,53.0000000000,54.0000000000,55.0000000000,56.0000000000,57.0000000000,58.0000000000,59.0000000000,60.0000000000,61.0000000000,62.0000000000,63.0000000000,35001,1.0000000000,1.0000000000
|
||||
|
Executable
|
|
Executable
|
|
Executable
+1
@@ -0,0 +1 @@
|
||||
Time:8Hz,Epoch,O1,O2,Pz,P1,P2,Event Id,Event Date,Event Duration
|
||||
|
+416
@@ -0,0 +1,416 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <tuple>
|
||||
#include <numeric>
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "csv/ovICSV.h"
|
||||
|
||||
struct SSignalFile
|
||||
{
|
||||
std::vector<std::string> m_ChannelNames;
|
||||
size_t m_Sampling;
|
||||
size_t m_nSamplePerBuffer;
|
||||
std::vector<std::pair<std::pair<double, double>, std::vector<double>>> m_data;
|
||||
};
|
||||
|
||||
namespace {
|
||||
std::string dataDirectory = "";
|
||||
|
||||
const struct SSignalFile SIMPLE_SIGNAL_FILE = {
|
||||
{ "Time Signal" },
|
||||
32,
|
||||
8,
|
||||
{
|
||||
{
|
||||
{ 0.00000, 0.25000 },
|
||||
{ 0.00000, 0.03125, 0.06250, 0.09375, 0.125, 0.15625, 0.1875, 0.21875 }
|
||||
},
|
||||
{
|
||||
{ 0.250000, 0.500000 },
|
||||
{ 0.250000, 0.281250, 0.312500, 0.343750, 0.375000, 0.406250, 0.437500, 0.468750 }
|
||||
},
|
||||
{
|
||||
{ 0.500000, 0.750000 },
|
||||
{ 0.500000, 0.531250, 0.562500, 0.593750, 0.625000, 0.656250, 0.687500, 0.718750 }
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
void compareChunks(const std::pair<std::pair<double, double>, std::vector<double>>& expected, const OpenViBE::CSV::SMatrixChunk& actual)
|
||||
{
|
||||
ASSERT_EQ(expected.first.first, actual.startTime);
|
||||
ASSERT_EQ(expected.first.second, actual.endTime);
|
||||
ASSERT_EQ(expected.second.size(), actual.matrix.size());
|
||||
for (size_t sample = 0; sample < expected.second.size(); ++sample) { ASSERT_EQ(expected.second[sample], actual.matrix[sample]); }
|
||||
}
|
||||
} // namespace
|
||||
|
||||
TEST(CSV_Reader_Test_Case, signalReaderUNIXEndlines)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* csv = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "/testCSVSignalUNIXEndlines.csv";
|
||||
|
||||
ASSERT_TRUE(csv->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
csv->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
std::vector<std::string> channelNames;
|
||||
size_t sampling;
|
||||
size_t nSamplePerBuffer;
|
||||
std::vector<OpenViBE::CSV::SMatrixChunk> chunks;
|
||||
std::vector<OpenViBE::CSV::SStimulationChunk> stimulations;
|
||||
|
||||
ASSERT_TRUE(csv->getSignalInformation(channelNames, sampling, nSamplePerBuffer));
|
||||
ASSERT_TRUE(csv->readSamplesAndEventsFromFile(1, chunks, stimulations));
|
||||
ASSERT_EQ(1, chunks.size());
|
||||
compareChunks(SIMPLE_SIGNAL_FILE.m_data[0], chunks[0]);
|
||||
ASSERT_TRUE(csv->readSamplesAndEventsFromFile(2, chunks, stimulations));
|
||||
ASSERT_EQ(2, chunks.size());
|
||||
compareChunks(SIMPLE_SIGNAL_FILE.m_data[1], chunks[0]);
|
||||
compareChunks(SIMPLE_SIGNAL_FILE.m_data[2], chunks[1]);
|
||||
|
||||
ASSERT_TRUE(csv->closeFile());
|
||||
releaseCSVHandler(csv);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, signalReaderWindowsEndlines)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* csv = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "/testCSVSignalWindowsEndlines.csv";
|
||||
|
||||
ASSERT_TRUE(csv->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
csv->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
std::vector<std::string> channelNames;
|
||||
size_t sampling;
|
||||
size_t nSamplePerBuffer;
|
||||
std::vector<OpenViBE::CSV::SMatrixChunk> chunks;
|
||||
std::vector<OpenViBE::CSV::SStimulationChunk> stimulations;
|
||||
|
||||
ASSERT_TRUE(csv->getSignalInformation(channelNames, sampling, nSamplePerBuffer));
|
||||
ASSERT_TRUE(csv->readSamplesAndEventsFromFile(1, chunks, stimulations));
|
||||
ASSERT_EQ(1, chunks.size());
|
||||
compareChunks(SIMPLE_SIGNAL_FILE.m_data[0], chunks[0]);
|
||||
ASSERT_TRUE(csv->readSamplesAndEventsFromFile(2, chunks, stimulations));
|
||||
ASSERT_EQ(2, chunks.size());
|
||||
compareChunks(SIMPLE_SIGNAL_FILE.m_data[1], chunks[0]);
|
||||
compareChunks(SIMPLE_SIGNAL_FILE.m_data[2], chunks[1]);
|
||||
|
||||
ASSERT_TRUE(csv->closeFile());
|
||||
releaseCSVHandler(csv);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, signalReaderNormalGoodSignal)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* signalReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVSignalReader01.csv";
|
||||
|
||||
ASSERT_TRUE(signalReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
signalReaderTest->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
std::vector<OpenViBE::CSV::SMatrixChunk> chunks;
|
||||
std::vector<OpenViBE::CSV::SStimulationChunk> stimulations;
|
||||
std::vector<std::string> channelNames;
|
||||
const std::vector<std::string> expectedChannels = { "O1", "O2", "Pz", "P1", "P2" };
|
||||
size_t sampling;
|
||||
size_t nSamplePerBuffer;
|
||||
|
||||
ASSERT_TRUE(signalReaderTest->getSignalInformation(channelNames, sampling, nSamplePerBuffer));
|
||||
ASSERT_TRUE(signalReaderTest->readSamplesAndEventsFromFile(3, chunks, stimulations));
|
||||
ASSERT_EQ(chunks.size(), 3);
|
||||
|
||||
ASSERT_TRUE(!chunks.empty());
|
||||
ASSERT_TRUE(!stimulations.empty());
|
||||
ASSERT_EQ(channelNames, expectedChannels);
|
||||
ASSERT_EQ(sampling, 8U);
|
||||
ASSERT_EQ(nSamplePerBuffer, 4);
|
||||
ASSERT_TRUE(signalReaderTest->closeFile());
|
||||
releaseCSVHandler(signalReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, signalReaderNotEnoughChunk)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* signalReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVSignalReader01.csv";
|
||||
|
||||
ASSERT_TRUE(signalReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
signalReaderTest->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
std::vector<OpenViBE::CSV::SMatrixChunk> chunks;
|
||||
std::vector<OpenViBE::CSV::SStimulationChunk> stimulations;
|
||||
std::vector<std::string> channelNames;
|
||||
const std::vector<std::string> expectedChannels = { "O1", "O2", "Pz", "P1", "P2" };
|
||||
size_t sampling;
|
||||
size_t nSamplePerBuffer;
|
||||
|
||||
ASSERT_TRUE(signalReaderTest->getSignalInformation(channelNames, sampling, nSamplePerBuffer));
|
||||
|
||||
ASSERT_TRUE(signalReaderTest->readSamplesAndEventsFromFile(3, chunks, stimulations));
|
||||
ASSERT_EQ(chunks.size(), size_t(3));
|
||||
ASSERT_EQ(stimulations.size(), size_t(3));
|
||||
ASSERT_EQ(channelNames, expectedChannels);
|
||||
ASSERT_EQ(sampling, 8U);
|
||||
ASSERT_EQ(nSamplePerBuffer, 4);
|
||||
ASSERT_TRUE(signalReaderTest->closeFile());
|
||||
releaseCSVHandler(signalReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, SignalReaderEmptyFile)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* signalReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVSignalEmptyFile.csv";
|
||||
ASSERT_TRUE(signalReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
releaseCSVHandler(signalReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, SignalReaderWrongHeader)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* signalReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVSignalWrongHeader.csv";
|
||||
ASSERT_TRUE(signalReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
signalReaderTest->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
std::vector<std::string> channelNames;
|
||||
size_t sampling;
|
||||
size_t nSamplePerBuffer;
|
||||
ASSERT_FALSE(signalReaderTest->getSignalInformation(channelNames, sampling, nSamplePerBuffer));
|
||||
|
||||
ASSERT_TRUE(signalReaderTest->closeFile());
|
||||
releaseCSVHandler(signalReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, spectrumReaderNormalGoodSignal)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* spectrumReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
std::string filepath = dataDirectory + "testCSVSpectrumReader01.csv";
|
||||
ASSERT_TRUE(spectrumReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
spectrumReaderTest->setFormatType(OpenViBE::CSV::EStreamType::Spectrum);
|
||||
std::vector<OpenViBE::CSV::SMatrixChunk> chunks;
|
||||
std::vector<OpenViBE::CSV::SStimulationChunk> stimulations;
|
||||
std::vector<std::string> channelNames;
|
||||
std::vector<std::string> expectedChannels = { "O1", "O2" };
|
||||
std::vector<double> expectedData(128);
|
||||
std::iota(expectedData.begin(), expectedData.begin() + 64, 0);
|
||||
std::iota(expectedData.begin() + 64, expectedData.end(), 0);
|
||||
|
||||
std::vector<double> frequencyAbscissa;
|
||||
size_t originalSampling;
|
||||
|
||||
ASSERT_TRUE(spectrumReaderTest->getSpectrumInformation(channelNames, frequencyAbscissa, originalSampling));
|
||||
|
||||
ASSERT_TRUE(spectrumReaderTest->readSamplesAndEventsFromFile(3, chunks, stimulations));
|
||||
ASSERT_EQ(chunks.size(), 3);
|
||||
ASSERT_EQ(chunks[0].matrix, expectedData);
|
||||
ASSERT_EQ(chunks[1].matrix, expectedData);
|
||||
ASSERT_EQ(chunks[2].matrix, expectedData);
|
||||
ASSERT_EQ(chunks[0].startTime, 0);
|
||||
ASSERT_EQ(chunks[0].endTime, 1);
|
||||
ASSERT_EQ(chunks[1].startTime, 0.125);
|
||||
ASSERT_EQ(chunks[1].endTime, 1.125);
|
||||
ASSERT_EQ(chunks[2].startTime, 0.25);
|
||||
ASSERT_EQ(chunks[2].endTime, 1.25);
|
||||
|
||||
ASSERT_TRUE(!chunks.empty());
|
||||
ASSERT_EQ(channelNames, expectedChannels);
|
||||
ASSERT_EQ(originalSampling, 128);
|
||||
ASSERT_TRUE(spectrumReaderTest->closeFile());
|
||||
releaseCSVHandler(spectrumReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, spectrumReaderNotEnoughChunk)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* spectrumReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVSpectrumReader01.csv";
|
||||
ASSERT_TRUE(spectrumReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
spectrumReaderTest->setFormatType(OpenViBE::CSV::EStreamType::Spectrum);
|
||||
std::vector<OpenViBE::CSV::SMatrixChunk> chunks;
|
||||
std::vector<OpenViBE::CSV::SStimulationChunk> stimulations;
|
||||
std::vector<std::string> channelNames;
|
||||
const std::vector<std::string> expectedChannels = { "O1", "O2" };
|
||||
std::vector<double> frequencyAbscissa;
|
||||
size_t originalSampling;
|
||||
|
||||
ASSERT_TRUE(spectrumReaderTest->getSpectrumInformation(channelNames, frequencyAbscissa, originalSampling));
|
||||
|
||||
ASSERT_TRUE(spectrumReaderTest->readSamplesAndEventsFromFile(13, chunks, stimulations));
|
||||
ASSERT_NE(chunks.size(), 13);
|
||||
|
||||
ASSERT_TRUE(!chunks.empty());
|
||||
ASSERT_EQ(channelNames, expectedChannels);
|
||||
ASSERT_EQ(originalSampling, 128);
|
||||
ASSERT_NE(4, chunks.size());
|
||||
ASSERT_TRUE(spectrumReaderTest->closeFile());
|
||||
releaseCSVHandler(spectrumReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, spectrumReaderWrongHeader)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* spectrumReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVSpectrumWrongHeader.csv";
|
||||
ASSERT_TRUE(spectrumReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
spectrumReaderTest->setFormatType(OpenViBE::CSV::EStreamType::Spectrum);
|
||||
std::vector<std::string> channelNames;
|
||||
std::vector<double> frequencyAbscissa;
|
||||
size_t originalSampling;
|
||||
ASSERT_FALSE(spectrumReaderTest->getSpectrumInformation(channelNames, frequencyAbscissa, originalSampling));
|
||||
|
||||
ASSERT_TRUE(spectrumReaderTest->closeFile());
|
||||
releaseCSVHandler(spectrumReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, matrixReaderNormalGoodSignal)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* matrixReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVMatrixReader01.csv";
|
||||
ASSERT_TRUE(matrixReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
matrixReaderTest->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
std::vector<OpenViBE::CSV::SMatrixChunk> chunks;
|
||||
std::vector<OpenViBE::CSV::SStimulationChunk> stimulations;
|
||||
std::vector<size_t> dimensionSizes;
|
||||
std::vector<std::string> labels;
|
||||
const std::vector<std::string> expectedLabels = { "", "", "", "", "", "" };
|
||||
const std::vector<size_t> goodDimensionsSizes = { 2, 2, 2 };
|
||||
|
||||
ASSERT_TRUE(matrixReaderTest->getStreamedMatrixInformation(dimensionSizes, labels));
|
||||
ASSERT_TRUE(matrixReaderTest->readSamplesAndEventsFromFile(10, chunks, stimulations));
|
||||
ASSERT_EQ(chunks.size(), 10);
|
||||
|
||||
ASSERT_EQ(dimensionSizes, goodDimensionsSizes);
|
||||
ASSERT_EQ(labels, expectedLabels);
|
||||
|
||||
ASSERT_TRUE(matrixReaderTest->closeFile());
|
||||
releaseCSVHandler(matrixReaderTest);
|
||||
}
|
||||
|
||||
|
||||
TEST(CSV_Reader_Test_Case, matrixReaderWrongHeader)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* matrixReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVMatrixWrongHeader.csv";
|
||||
ASSERT_TRUE(matrixReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
matrixReaderTest->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
std::vector<size_t> dimensionSizes;
|
||||
std::vector<std::string> labels;
|
||||
ASSERT_FALSE(matrixReaderTest->getStreamedMatrixInformation(dimensionSizes, labels));
|
||||
|
||||
ASSERT_TRUE(matrixReaderTest->closeFile());
|
||||
releaseCSVHandler(matrixReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, matrixReaderTooManyLabels)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* matrixReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVMatrixTooManyLabels.csv";
|
||||
ASSERT_TRUE(matrixReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
matrixReaderTest->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
std::vector<size_t> dimensionSizes;
|
||||
std::vector<std::string> labels;
|
||||
ASSERT_FALSE(matrixReaderTest->getStreamedMatrixInformation(dimensionSizes, labels));
|
||||
|
||||
ASSERT_TRUE(matrixReaderTest->closeFile());
|
||||
releaseCSVHandler(matrixReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, matrixReaderWrongStimulation)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* matrixReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVMatrixWrongStimulation.csv";
|
||||
ASSERT_TRUE(matrixReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
matrixReaderTest->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
std::vector<size_t> dimensionSizes;
|
||||
std::vector<std::string> labels;
|
||||
ASSERT_TRUE(matrixReaderTest->getStreamedMatrixInformation(dimensionSizes, labels));
|
||||
|
||||
std::vector<OpenViBE::CSV::SMatrixChunk> chunks;
|
||||
std::vector<OpenViBE::CSV::SStimulationChunk> stimulations;
|
||||
|
||||
ASSERT_FALSE(matrixReaderTest->readSamplesAndEventsFromFile(1, chunks, stimulations));
|
||||
|
||||
ASSERT_TRUE(matrixReaderTest->closeFile());
|
||||
releaseCSVHandler(matrixReaderTest);
|
||||
}
|
||||
|
||||
|
||||
TEST(CSV_Reader_Test_Case, covarianceMatrixReaderNormalGoodSignal)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* matrixReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVCovarMatrixReader01.csv";
|
||||
ASSERT_TRUE(matrixReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
matrixReaderTest->setFormatType(OpenViBE::CSV::EStreamType::CovarianceMatrix);
|
||||
|
||||
std::vector<OpenViBE::CSV::SMatrixChunk> chunks;
|
||||
std::vector<OpenViBE::CSV::SStimulationChunk> stimulations;
|
||||
std::vector<size_t> dimensionSizes;
|
||||
std::vector<std::string> labels;
|
||||
const std::vector<std::string> expectedLabels = { "X", "Y", "X", "Y", "Z1", "Z2", "Z3", "Z4", "Z5" };
|
||||
const std::vector<size_t> goodDimensionsSizes = { 2, 2, 5 };
|
||||
|
||||
ASSERT_TRUE(matrixReaderTest->getStreamedMatrixInformation(dimensionSizes, labels));
|
||||
ASSERT_TRUE(matrixReaderTest->readSamplesAndEventsFromFile(3, chunks, stimulations)) << matrixReaderTest->getLastLogError() << ".Details: " <<
|
||||
matrixReaderTest->getLastErrorString();
|
||||
ASSERT_EQ(chunks.size(), 3);
|
||||
|
||||
ASSERT_EQ(dimensionSizes, goodDimensionsSizes);
|
||||
ASSERT_EQ(labels, expectedLabels);
|
||||
|
||||
ASSERT_TRUE(matrixReaderTest->closeFile());
|
||||
releaseCSVHandler(matrixReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, covarianceMatrixReaderWrongHeader)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* matrixReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVCovarMatrixWrongHeader.csv";
|
||||
ASSERT_TRUE(matrixReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
|
||||
matrixReaderTest->setFormatType(OpenViBE::CSV::EStreamType::CovarianceMatrix);
|
||||
|
||||
std::vector<size_t> dimensionSizes;
|
||||
std::vector<std::string> labels;
|
||||
ASSERT_FALSE(matrixReaderTest->getStreamedMatrixInformation(dimensionSizes, labels));
|
||||
|
||||
ASSERT_TRUE(matrixReaderTest->closeFile());
|
||||
releaseCSVHandler(matrixReaderTest);
|
||||
}
|
||||
|
||||
TEST(CSV_Reader_Test_Case, covarianceMatrixReaderTooManyLabels)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* matrixReaderTest = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filepath = dataDirectory + "testCSVCovarMatrixTooManyLabels.csv";
|
||||
ASSERT_TRUE(matrixReaderTest->openFile(filepath, OpenViBE::CSV::EFileAccessMode::Read));
|
||||
matrixReaderTest->setFormatType(OpenViBE::CSV::EStreamType::CovarianceMatrix);
|
||||
|
||||
std::vector<size_t> dimensionSizes;
|
||||
std::vector<std::string> labels;
|
||||
ASSERT_FALSE(matrixReaderTest->getStreamedMatrixInformation(dimensionSizes, labels));
|
||||
|
||||
ASSERT_TRUE(matrixReaderTest->closeFile());
|
||||
releaseCSVHandler(matrixReaderTest);
|
||||
}
|
||||
|
||||
int uoCSVReaderTest(int argc, char* argv[])
|
||||
{
|
||||
if (argv[1] != nullptr) { dataDirectory = argv[1]; }
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
::testing::GTEST_FLAG(filter) = "CSV_Reader_Test_Case.*";
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
+595
@@ -0,0 +1,595 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "csv/ovICSV.h"
|
||||
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <streambuf>
|
||||
#include <numeric>
|
||||
|
||||
static std::string directoryPath = "";
|
||||
|
||||
TEST(CSV_Writer_Test_Case, signalWriterNormalGoodSignal)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVSignalWriter01.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
|
||||
ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8));
|
||||
|
||||
double index = 0.0;
|
||||
while (index < 1.2)
|
||||
{
|
||||
const double epoch = index / 0.5;
|
||||
ASSERT_TRUE(handler->addSample({ index, index + 0.125, { -10.10, -5.05, 0.00, 5.05, 10.10 }, size_t(epoch) }));
|
||||
if (index == 0.25 || index == 0.75) { ASSERT_TRUE(handler->addEvent(35000, index, 0.0)); }
|
||||
index += 0.125;
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, signalWriterNoStimulations)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVSignalWriter02.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
|
||||
ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8));
|
||||
ASSERT_TRUE(handler->noEventsUntilDate(2.0));
|
||||
|
||||
double index = 0.0;
|
||||
while (index < 1.2)
|
||||
{
|
||||
const double epoch = index / 0.5;
|
||||
ASSERT_TRUE(handler->addSample({ index, index + 0.125, { -10.10, -5.05, 0.00, 5.05, 10.10 }, size_t(epoch) }));
|
||||
index += 0.125;
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, signalWriterNoFileOpen)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8));
|
||||
|
||||
double index = 0.0;
|
||||
while (index < 1.2)
|
||||
{
|
||||
const double epoch = index / 0.5;
|
||||
ASSERT_TRUE(handler->addSample({ index, index + 0.125, { -10.10, -5.05, 0.00, 5.05, 10.10 }, size_t(epoch) }));
|
||||
index += 0.125;
|
||||
}
|
||||
|
||||
ASSERT_FALSE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, signalWriterWrongInputType)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Spectrum);
|
||||
ASSERT_FALSE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8));
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, signalWriterWrongMatrixSize)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVSignalWriter05.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8));
|
||||
ASSERT_FALSE(handler->addSample({ 0, 0.125, { -20.20, -10.10, -5.05, 5.05, 10.10, 20.20 }, 0 }));
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
// should have nothing in the file
|
||||
TEST(CSV_Writer_Test_Case, signalWriterTonsOfSignalWithoutSetNoEventsUntilDate)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVSignalWriter06.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8));
|
||||
|
||||
double time = 0.0;
|
||||
while (time < 100.0)
|
||||
{
|
||||
ASSERT_TRUE(handler->addSample({ time, time + 0.125, { -20.20, -10.10, 0.0, 10.10, 20.20 }, size_t(time / 0.125) }));
|
||||
time += 0.125;
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
// file should be full
|
||||
TEST(CSV_Writer_Test_Case, signalWriterTonsOfSignalWithSetNoEventsUntilDate)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVSignalWriter07.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8));
|
||||
ASSERT_TRUE(handler->noEventsUntilDate(100.001));
|
||||
|
||||
double time = 0.0;
|
||||
while (time < 100.0)
|
||||
{
|
||||
ASSERT_TRUE(handler->addSample({ time, time + 0.125, { -20.20, -10.10, 0.0, 10.10, 20.20 }, size_t(time / 0.5) }));
|
||||
time += 0.125;
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->writeAllDataToFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, signalWriterOnlyLastMatrix)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
handler->setLastMatrixOnlyMode(true);
|
||||
const std::string filename = directoryPath + "testCSVSignalWriter08.csv";
|
||||
const std::string expectedFileContent(
|
||||
"Time:8Hz,Epoch,O1,O2,Pz,P1,P2,Event Id,Event Date,Event Duration\n1.0000000000,2,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,35000,1.0000000000,0.0000000000\n1.1250000000,2,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,\n");
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
|
||||
ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8));
|
||||
|
||||
double index = 0.0;
|
||||
while (index < 1.2)
|
||||
{
|
||||
const double epoch = index / 0.5;
|
||||
ASSERT_TRUE(handler->addSample({ index, index + 0.125, { -10.10, -5.05, 0.00, 5.05, 10.10 }, size_t(epoch) }));
|
||||
if (index == 0.25 || index == 0.75 || index == 1.0) { ASSERT_TRUE(handler->addEvent(35000, index, 0.0)); }
|
||||
index += 0.125;
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeAllDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
|
||||
std::ifstream t(filename);
|
||||
const std::string out((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());
|
||||
|
||||
ASSERT_STREQ(out.c_str(), expectedFileContent.c_str());
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, spectrumWriterNormalGoodSignal)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVSpectrumWriter01.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Spectrum);
|
||||
|
||||
std::vector<double> frequencyAbscissa(64);
|
||||
std::iota(frequencyAbscissa.begin(), frequencyAbscissa.end(), 0.0);
|
||||
|
||||
ASSERT_TRUE(handler->setSpectrumInformation({ "O1", "O2" }, frequencyAbscissa, 256));
|
||||
double time = 0;
|
||||
for (size_t i = 0; i < 10; ++i)
|
||||
{
|
||||
const size_t epoch = i / 4;
|
||||
std::vector<double> sample(128);
|
||||
std::iota(sample.begin(), sample.end(), -64);
|
||||
|
||||
ASSERT_TRUE(handler->addSample({ time, time + 1.0, sample, epoch }));
|
||||
|
||||
time += 0.125;
|
||||
if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, time, 1.0)); }
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, spectrumWriterWrongInputType)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVSpectrumWriter02.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Signal);
|
||||
std::vector<double> frequencyAbscissa(64);
|
||||
std::iota(frequencyAbscissa.begin(), frequencyAbscissa.end(), 0.0);
|
||||
|
||||
ASSERT_FALSE(handler->setSpectrumInformation({ "O1", "O2" }, frequencyAbscissa, 256));
|
||||
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, spectrumWriterWrongMatrixSize)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVSpectrumWriter03.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::Spectrum);
|
||||
std::vector<double> frequencyAbscissa(64);
|
||||
std::iota(frequencyAbscissa.begin(), frequencyAbscissa.end(), 0.0);
|
||||
ASSERT_TRUE(handler->setSpectrumInformation({ "O1", "O2" }, frequencyAbscissa, 256));
|
||||
|
||||
ASSERT_FALSE(handler->addSample({ 0, 1, { -20.20, -10.10, 0.0, 10.10, 20.20 }, 0 }));
|
||||
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, matrixWriterNormalGoodSignal)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVMatrixWriter01.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "LA", "LB", "1", "2", "X", "Y" }));
|
||||
|
||||
for (size_t i = 0; i < 50; ++i)
|
||||
{
|
||||
const size_t epoch = i / 10;
|
||||
ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20 }, epoch }));
|
||||
|
||||
if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); }
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, matrixWriterEmptyLabels)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVMatrixWriter02.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "", "", "", "", "", "" }));
|
||||
|
||||
for (size_t i = 0; i < 50; ++i)
|
||||
{
|
||||
const size_t epoch = i / 10;
|
||||
ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20 }, epoch }));
|
||||
|
||||
if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); }
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, matrixWithDifferentsDimensionSizes)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVMatrixWriter03.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
ASSERT_TRUE(handler->setStreamedMatrixInformation({ 1, 4 }, { "L1", "A", "B", "C", "D" }));
|
||||
|
||||
for (size_t i = 0; i < 50; ++i)
|
||||
{
|
||||
const size_t epoch = i / 10;
|
||||
ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -10.10, 10.10, 20.20 }, epoch }));
|
||||
|
||||
if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); }
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, matrixWriterWrongMatrixSize)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVMatrixWriter04.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "", "", "", "", "", "" }));
|
||||
|
||||
ASSERT_FALSE(handler->addSample({ 0, 1.0, { -25.25, -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20, 25.25 }, 0 }));
|
||||
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, matrixWithDifferentsDimensionSizes2)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVMatrixWriter05.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
ASSERT_TRUE(
|
||||
handler->setStreamedMatrixInformation({ 6, 8, 2 }, { "L1", "L2", "L3", "L4", "L5", "L6", "A1", "B2", "C3", "D4", "E5", "F6", "G7", "H8", "X", "Y" }));
|
||||
|
||||
std::vector<double> values(96);
|
||||
std::iota(values.begin(), values.end(), 0.0);
|
||||
|
||||
for (size_t i = 0; i < 50; ++i)
|
||||
{
|
||||
const size_t epoch = i / 10;
|
||||
ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, values, epoch }));
|
||||
|
||||
if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); }
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, matrixWithDifferentsDimensionSizes3)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVMatrixWriter06.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
ASSERT_TRUE(handler->setStreamedMatrixInformation({ 4, 1, 4 }, { "L1", "L2", "L3", "L4", "X", "R1", "R2", "R3", "R4" }));
|
||||
|
||||
std::vector<double> values(16);
|
||||
std::iota(values.begin(), values.end(), 0.0);
|
||||
|
||||
for (size_t i = 0; i < 50; ++i)
|
||||
{
|
||||
const size_t epoch = i / 10;
|
||||
ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, values, epoch }));
|
||||
|
||||
if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); }
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
// As of 10/01/2017 (commit a11210cf1c3fd81bb52095c7c9c6006c760218a2), this is valid for
|
||||
TEST(CSV_Writer_Test_Case, matrixWriterWithInvalidTime)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVMatrixWriter07.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
ASSERT_TRUE(handler->setStreamedMatrixInformation({ 1, 1, 1 }, { "X", "Y", "Z" }));
|
||||
|
||||
ASSERT_FALSE(handler->addSample({ 1.0, 0, { -20.20, -15.15, -10.10 }, 0 }));
|
||||
ASSERT_FALSE(handler->addSample({ -1.0, 0, { -20.20, -15.15, -10.10 }, 1 }));
|
||||
ASSERT_FALSE(handler->addSample({ -1.0, -0.5, { -20.20, -15.15, -10.10 }, 2 }));
|
||||
ASSERT_FALSE(handler->addSample({ 1.0, -1.0, { -20.20, -15.15, -10.10 }, 3 }));
|
||||
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, matrixWriterOnlyLastMatrix)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
handler->setLastMatrixOnlyMode(true);
|
||||
const std::string filename = directoryPath + "testCSVMatrixWriter08.csv";
|
||||
const std::string expectedFileContent(
|
||||
"Time:2x2x2,End Time,LA:1:X,LA:1:Y,LA:2:X,LA:2:Y,LB:1:X,LB:1:Y,LB:2:X,LB:2:Y,Event Id,Event Date,Event Duration\n49.0000000000,50.0000000000,49.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,,,\n");
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix);
|
||||
|
||||
ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "LA", "LB", "1", "2", "X", "Y" }));
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
|
||||
for (size_t i = 0; i < 50; ++i)
|
||||
{
|
||||
const size_t epoch = i / 10;
|
||||
ASSERT_TRUE(handler->addSample({ double(i), double(i) + 1.0, { double(i), 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 }, epoch }));
|
||||
|
||||
if (i == 3 || i == 5 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i) + 3.5, 1.0)); }
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeAllDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
|
||||
std::ifstream t(filename);
|
||||
const std::string out((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());
|
||||
|
||||
ASSERT_STREQ(out.c_str(), expectedFileContent.c_str());
|
||||
}
|
||||
|
||||
|
||||
TEST(CSV_Writer_Test_Case, featureVectorNormalGoodSignal)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVFeatureVectorWriter01.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::FeatureVector);
|
||||
|
||||
ASSERT_TRUE(handler->setFeatureVectorInformation({ "F1", "F2", "F3" }));
|
||||
|
||||
for (size_t i = 0; i < 50; ++i)
|
||||
{
|
||||
const size_t epoch = i / 10;
|
||||
ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10 }, epoch }));
|
||||
|
||||
if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); }
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, featureVectorEmptyLabels)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVFeatureVectorWriter02.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::FeatureVector);
|
||||
|
||||
ASSERT_TRUE(handler->setFeatureVectorInformation({ "", "", "" }));
|
||||
|
||||
for (size_t i = 0; i < 50; ++i)
|
||||
{
|
||||
const size_t epoch = i / 10;
|
||||
ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10 }, epoch }));
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, featureVectorWrongVectorSize)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVFeatureVectorWriter03.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::FeatureVector);
|
||||
|
||||
ASSERT_TRUE(handler->setFeatureVectorInformation({ "F1", "F2", "F3" }));
|
||||
|
||||
ASSERT_FALSE(handler->addSample({ 0, 1.0, { -20.20, -15.15, -10.10, 12 }, 0 }));
|
||||
ASSERT_FALSE(handler->addSample({ 1.0, 2.0, { -20.20, -15.15 }, 1 }));
|
||||
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
|
||||
TEST(CSV_Writer_Test_Case, covarianceMatrixWriterNormalGoodSignal)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVCovarMatrixWriter01.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::CovarianceMatrix);
|
||||
|
||||
ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "C1", "C2", "C1", "C2", "Matrix 1", "Matrix 2" }));
|
||||
|
||||
for (size_t i = 0; i < 50; ++i)
|
||||
{
|
||||
const size_t epoch = i / 10;
|
||||
ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20 }, epoch }));
|
||||
}
|
||||
handler->noEventsUntilDate(20.0);
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeAllDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
TEST(CSV_Writer_Test_Case, covarianceMatrixWriterEmptyLabels)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVCovarMatrixWriter02.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::CovarianceMatrix);
|
||||
|
||||
ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "", "", "", "", "", "" }));
|
||||
|
||||
for (size_t i = 0; i < 50; ++i)
|
||||
{
|
||||
const size_t epoch = i / 10;
|
||||
ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20 }, epoch }));
|
||||
}
|
||||
|
||||
ASSERT_TRUE(handler->writeHeaderToFile());
|
||||
ASSERT_TRUE(handler->writeAllDataToFile());
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
|
||||
TEST(CSV_Writer_Test_Case, covarianceMatrixWriterWrongMatrixSize)
|
||||
{
|
||||
OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler();
|
||||
const std::string filename = directoryPath + "testCSVCovarMatrixWriter04.csv";
|
||||
|
||||
ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write));
|
||||
handler->setFormatType(OpenViBE::CSV::EStreamType::CovarianceMatrix);
|
||||
ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "", "", "", "", "", "" }));
|
||||
|
||||
ASSERT_FALSE(handler->addSample({ 0, 1.0, { -25.25, -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20, 25.25 }, 0 }));
|
||||
|
||||
ASSERT_TRUE(handler->closeFile());
|
||||
releaseCSVHandler(handler);
|
||||
}
|
||||
|
||||
|
||||
int uoCSVWriterTest(int argc, char* argv[])
|
||||
{
|
||||
if (argv[1] != nullptr) { directoryPath = argv[1]; }
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
::testing::GTEST_FLAG(filter) = "CSV_Writer_Test_Case.*";
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
#######################################################################
|
||||
# Software License Agreement (AGPL-3 License)
|
||||
#
|
||||
# OpenViBE SDK Test Software
|
||||
# Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
# Copyright (C) Inria, 2015-2017,V1.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License version 3,
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#######################################################################
|
||||
|
||||
PROJECT(openvibe-module-ebml-test)
|
||||
|
||||
# ---------------------------------
|
||||
# Target macros
|
||||
# Defines target operating system, architecture and compiler
|
||||
# ---------------------------------
|
||||
SET_BUILD_PLATFORM()
|
||||
|
||||
# ----------------------
|
||||
# Configure test target
|
||||
# ----------------------
|
||||
|
||||
# Test that needs to called with parameters
|
||||
SET(TEST_WITH_PARAM
|
||||
uoEBMLReaderTest.cpp
|
||||
uoEBMLWriterTest.cpp
|
||||
)
|
||||
|
||||
# Test that needs to called without parameters
|
||||
SET(TEST_NO_PARAM
|
||||
)
|
||||
|
||||
# Create test sources list
|
||||
# This macro auto-generate ${PROJECT_NAME}.cpp
|
||||
# in the build tree. ${PROJECT_NAME}.cpp is
|
||||
# the test driver called by ctest to run
|
||||
# the different tests added to this target.
|
||||
CREATE_TEST_SOURCELIST (Tests
|
||||
${PROJECT_NAME}.cpp
|
||||
${TEST_WITH_PARAM}
|
||||
${TEST_NO_PARAM}
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} ${Tests})
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBECommon")
|
||||
INCLUDE("FindOpenViBEModuleEBML")
|
||||
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${TESTS_FOLDER})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OVT_UNIT_TOOLKIT_LIB} ${OV_MODULE_EBML})
|
||||
|
||||
# Add test without parameter to driver
|
||||
FOREACH(test ${TEST_NO_PARAM})
|
||||
GET_FILENAME_COMPONENT(TName ${test} NAME_WE)
|
||||
ADD_TEST(NAME ${TName} COMMAND ${PROJECT_NAME} ${TName})
|
||||
ENDFOREACH()
|
||||
|
||||
# Add test with parameter to driver
|
||||
ADD_TEST(NAME uoEBMLReaderTest COMMAND ${PROJECT_NAME} uoEBMLReaderTest "${CMAKE_CURRENT_SOURCE_DIR}/data/" "${OVT_TEST_TEMPORARY_DIR}")
|
||||
ADD_TEST(NAME uoEBMLWriterTest COMMAND ${PROJECT_NAME} uoEBMLWriterTest "${CMAKE_CURRENT_SOURCE_DIR}/data/" "${OVT_TEST_TEMPORARY_DIR}")
|
||||
BIN
Binary file not shown.
+408
@@ -0,0 +1,408 @@
|
||||
testing with n=17
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=16
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=15
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=14
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=13
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=12
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=11
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=10
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=9
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=8
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=7
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=6
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=5
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=4
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=3
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=2
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
testing with n=1
|
||||
Opening child node [0x000000000a45dfa3]
|
||||
Opening child node [0x0000000000000282]
|
||||
Got doc type : [matroska]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000287]
|
||||
Got doc type version : [0x0000000000000001]
|
||||
Node closed
|
||||
Opening child node [0x0000000000000285]
|
||||
Got doc type read version : [0x000000000009fffc]
|
||||
Node closed
|
||||
Node closed
|
||||
Opening child node [0x0000000000001234]
|
||||
Got uinteger : [0x0000000000000000]
|
||||
Node closed
|
||||
Opening child node [0xffffffffffffffff]
|
||||
Got uinteger : [0xff000000ff000000]
|
||||
Node closed
|
||||
Opening child node [0x0000000000004321]
|
||||
Got double : [3.14159]
|
||||
Node closed
|
||||
Opening child node [0x0000000000008765]
|
||||
Got float : [3.14159]
|
||||
Node closed
|
||||
+169
@@ -0,0 +1,169 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <fstream>
|
||||
|
||||
#include "ebml/IReader.h"
|
||||
#include "ebml/CReader.h"
|
||||
#include "ebml/CReaderHelper.h"
|
||||
|
||||
#include "ovtAssert.h"
|
||||
|
||||
std::ofstream g_OutputStream;
|
||||
|
||||
class CReaderCallBack : public EBML::IReaderCallBack
|
||||
{
|
||||
public:
|
||||
CReaderCallBack() { }
|
||||
|
||||
~CReaderCallBack() override { }
|
||||
|
||||
bool isMasterChild(const EBML::CIdentifier& identifier) override
|
||||
{
|
||||
if (identifier == EBML_Identifier_Header) { return true; }
|
||||
if (identifier == EBML::CIdentifier(0xffff)) { return true; }
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void openChild(const EBML::CIdentifier& identifier) override
|
||||
{
|
||||
m_CurrentID = identifier;
|
||||
|
||||
for (int i = 0; i < m_Depth; ++i) { g_OutputStream << " "; }
|
||||
g_OutputStream << "Opening child node [0x" << std::setw(16) << std::setfill('0') << std::hex << m_CurrentID << std::dec << "]\n";
|
||||
m_Depth++;
|
||||
}
|
||||
|
||||
void processChildData(const void* buffer, const size_t size) override
|
||||
{
|
||||
for (int i = 0; i < m_Depth; ++i) { g_OutputStream << " "; }
|
||||
if (m_CurrentID == EBML_Identifier_DocType) { g_OutputStream << "Got doc type : [" << m_helper.getStr(buffer, size) << "]\n"; }
|
||||
else if (m_CurrentID == EBML_Identifier_EBMLVersion)
|
||||
{
|
||||
g_OutputStream << "Got EBML version : [0x" << std::setw(16) << std::setfill('0') << std::hex << m_helper.getUInt(buffer, size) << std::dec << "]\n";
|
||||
}
|
||||
else if (m_CurrentID == EBML_Identifier_EBMLIdLength)
|
||||
{
|
||||
g_OutputStream << "Got EBML ID length : [0x" << std::setw(16) << std::setfill('0') << std::hex << m_helper.getUInt(buffer, size) << std::dec <<
|
||||
"]\n";
|
||||
}
|
||||
else if (m_CurrentID == EBML_Identifier_DocTypeVersion)
|
||||
{
|
||||
g_OutputStream << "Got doc type version : [0x" << std::setw(16) << std::setfill('0') << std::hex << m_helper.getUInt(buffer, size) << std::dec <<
|
||||
"]\n";
|
||||
}
|
||||
else if (m_CurrentID == EBML_Identifier_DocTypeReadVersion)
|
||||
{
|
||||
g_OutputStream << "Got doc type read version : [0x" << std::setw(16) << std::setfill('0') << std::hex << m_helper.getUInt(buffer, size) << std::dec
|
||||
<< "]\n";
|
||||
}
|
||||
else if (m_CurrentID == EBML::CIdentifier(0x1234))
|
||||
{
|
||||
g_OutputStream << "Got uinteger : [0x" << std::setw(16) << std::setfill('0') << std::hex << m_helper.getUInt(buffer, size) << std::dec << "]\n";
|
||||
}
|
||||
else if (m_CurrentID == EBML::CIdentifier(0xffffffffffffffffLL))
|
||||
{
|
||||
g_OutputStream << "Got uinteger : [0x" << std::setw(16) << std::setfill('0') << std::hex << m_helper.getUInt(buffer, size) << std::dec << "]\n";
|
||||
}
|
||||
else if (m_CurrentID == EBML::CIdentifier(0x4321)) { g_OutputStream << "Got double : [" << m_helper.getDouble(buffer, size) << "]\n"; }
|
||||
else if (m_CurrentID == EBML::CIdentifier(0x8765)) { g_OutputStream << "Got float : [" << m_helper.getDouble(buffer, size) << "]\n"; }
|
||||
else { g_OutputStream << "Got " << size << " data bytes, node id not known\n"; }
|
||||
}
|
||||
|
||||
void closeChild() override
|
||||
{
|
||||
m_Depth--;
|
||||
for (int i = 0; i < m_Depth; ++i) { g_OutputStream << " "; }
|
||||
g_OutputStream << "Node closed\n";
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
int m_Depth = 0;
|
||||
|
||||
EBML::CReaderHelper m_helper;
|
||||
EBML::CIdentifier m_CurrentID;
|
||||
};
|
||||
|
||||
int uoEBMLReaderTest(int argc, char* argv[])
|
||||
{
|
||||
OVT_ASSERT(argc == 3, "Failure to retrieve tests arguments. Expecting: data_dir output_dir");
|
||||
|
||||
std::string dataFile = std::string(argv[1]) + "ref_data.ebml";
|
||||
std::string expectedFile = std::string(argv[1]) + "ref_result.txt";
|
||||
std::string outputFile = std::string(argv[2]) + "uoEBMLReaderTest.txt";
|
||||
|
||||
// The test parses a known ebml file,
|
||||
// writes the results into a text file and compares the output
|
||||
// text file to a reference text file.
|
||||
|
||||
g_OutputStream.open(outputFile);
|
||||
|
||||
|
||||
OVT_ASSERT(g_OutputStream.is_open(), "Failure to open output file for writing");
|
||||
|
||||
// parsing
|
||||
for (size_t n = 17; n >= 1; n--)
|
||||
{
|
||||
CReaderCallBack callback;
|
||||
EBML::CReader reader(callback);
|
||||
|
||||
g_OutputStream << "testing with n=" << n << std::endl;
|
||||
|
||||
FILE* file = fopen(dataFile.c_str(), "rb");
|
||||
|
||||
OVT_ASSERT(file != nullptr, "Failure to open data file for reading");
|
||||
|
||||
unsigned char* c = new unsigned char[n];
|
||||
size_t i = 0;
|
||||
while (!feof(file))
|
||||
{
|
||||
i = fread(c, 1, n * sizeof(unsigned char), file);
|
||||
reader.processData(c, i);
|
||||
}
|
||||
delete[] c;
|
||||
fclose(file);
|
||||
}
|
||||
g_OutputStream.close();
|
||||
// comparison part
|
||||
std::ifstream generatedStream(outputFile);
|
||||
std::ifstream expectedStream(expectedFile);
|
||||
|
||||
OVT_ASSERT(generatedStream.is_open(), "Failure to open generated results for reading");
|
||||
OVT_ASSERT(expectedStream.is_open(), "Failure to open expected results for reading");
|
||||
|
||||
std::string generatedString;
|
||||
std::string expectedString;
|
||||
while (std::getline(expectedStream, expectedString))
|
||||
{
|
||||
OVT_ASSERT(std::getline(generatedStream, generatedString), "Failure to retrieve a line to match");
|
||||
OVT_ASSERT_STREQ(expectedString, generatedString, "Failure to match expected line to generated line");
|
||||
}
|
||||
|
||||
// last check to verify the expected file has no additional line
|
||||
OVT_ASSERT(!std::getline(generatedStream, generatedString), "Failure to match expected file size and generated file size");
|
||||
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
+140
@@ -0,0 +1,140 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iomanip>
|
||||
#include <fstream>
|
||||
#include <cstdio>
|
||||
|
||||
#include "ebml/defines.h"
|
||||
#include "ebml/IWriter.h"
|
||||
#include "ebml/CWriterHelper.h"
|
||||
|
||||
#include "ovtAssert.h"
|
||||
#include <iostream>
|
||||
|
||||
#define OVP_NodeId_OpenViBEStream_Header EBML::CIdentifier(0xF59505AB, 0x3684C8D8)
|
||||
#define OVP_NodeId_OpenViBEStream_Header_Compression EBML::CIdentifier(0x40358769, 0x166380D1)
|
||||
#define OVP_NodeId_OpenViBEStream_Header_StreamType EBML::CIdentifier(0x732EC1D1, 0xFE904087)
|
||||
#define OVP_NodeId_OpenViBEStream_Buffer EBML::CIdentifier(0x2E60AD18, 0x87A29BDF)
|
||||
#define OVP_NodeId_OpenViBEStream_Buffer_StreamIndex EBML::CIdentifier(0x30A56D8A, 0xB9C12238)
|
||||
#define OVP_NodeId_OpenViBEStream_Buffer_StartTime EBML::CIdentifier(0x093E6A0A, 0xC5A9467B)
|
||||
#define OVP_NodeId_OpenViBEStream_Buffer_EndTime EBML::CIdentifier(0x8B5CCCD9, 0xC5024F29)
|
||||
#define OVP_NodeId_OpenViBEStream_Buffer_Content EBML::CIdentifier(0x8D4B0BE8, 0x7051265C)
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.1415926535897932384626433832795
|
||||
#endif
|
||||
|
||||
class CWriterCallBack : public EBML::IWriterCallBack
|
||||
{
|
||||
public:
|
||||
CWriterCallBack(const char* filename) { m_file = std::fopen(filename, "wb"); }
|
||||
|
||||
~CWriterCallBack() override { if (m_file) { std::fclose(m_file); } } // in case release is not called
|
||||
|
||||
void write(const void* buffer, const size_t size) override { if (m_file) { std::fwrite(buffer, size_t(size), 1, m_file); } }
|
||||
|
||||
// necessary thjor the test to close the stream and re-open it for inspection
|
||||
void release()
|
||||
{
|
||||
std::fclose(m_file);
|
||||
m_file = nullptr;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
std::FILE* m_file{ nullptr };
|
||||
};
|
||||
|
||||
int uoEBMLWriterTest(int argc, char* argv[])
|
||||
{
|
||||
OVT_ASSERT(argc == 3, "Failure to retrieve tests arguments. Expecting: data_dir output_dir");
|
||||
|
||||
const std::string expectedFile = std::string(argv[1]) + "ref_data.ebml";
|
||||
const std::string outputFile = std::string(argv[2]) + "uoEBMLWriterTest.ebml";
|
||||
|
||||
// The test serializes a known ebml sequence and compares the output
|
||||
// to a reference.
|
||||
|
||||
// serializing
|
||||
CWriterCallBack callback(outputFile.c_str());
|
||||
|
||||
EBML::IWriter* writer = createWriter(callback);
|
||||
EBML::CWriterHelper helper;
|
||||
|
||||
helper.connect(writer);
|
||||
|
||||
helper.openChild(EBML_Identifier_Header);
|
||||
|
||||
helper.openChild(EBML_Identifier_DocType);
|
||||
helper.setStr("matroska");
|
||||
helper.closeChild();
|
||||
|
||||
helper.openChild(EBML_Identifier_DocTypeVersion);
|
||||
helper.setUInt(1);
|
||||
helper.closeChild();
|
||||
|
||||
helper.openChild(EBML_Identifier_DocTypeReadVersion);
|
||||
helper.setInt(655356);
|
||||
helper.closeChild();
|
||||
|
||||
helper.closeChild();
|
||||
|
||||
helper.openChild(0x1234);
|
||||
helper.setUInt(0);
|
||||
helper.closeChild();
|
||||
|
||||
helper.openChild(0xffffffffffffffffLL);
|
||||
helper.setUInt(0xff000000ff000000LL);
|
||||
helper.closeChild();
|
||||
|
||||
helper.openChild(0x4321);
|
||||
helper.setDouble(M_PI);
|
||||
helper.closeChild();
|
||||
|
||||
helper.openChild(0x8765);
|
||||
helper.setFloat(float(M_PI));
|
||||
helper.closeChild();
|
||||
writer->release();
|
||||
callback.release();
|
||||
|
||||
|
||||
// comparison part
|
||||
std::ifstream generatedStream(outputFile, std::ios::binary);
|
||||
std::ifstream expectedStream(expectedFile, std::ios::binary);
|
||||
|
||||
OVT_ASSERT(generatedStream.is_open(), "Failure to open generated ebml stream for reading");
|
||||
OVT_ASSERT(expectedStream.is_open(), "Failure to open reference stream for reading");
|
||||
|
||||
char generatedChar;
|
||||
char expectedChar;
|
||||
|
||||
while (expectedStream.get(expectedChar))
|
||||
{
|
||||
OVT_ASSERT(generatedStream.get(generatedChar), "Failure to retrieve a char to match");
|
||||
OVT_ASSERT(generatedChar == expectedChar, "Failure to match expected char to generated char");
|
||||
}
|
||||
|
||||
// last check to verify the expected file has no additional line
|
||||
OVT_ASSERT(!generatedStream.get(generatedChar), "Failure to match expected file size and generated file size");
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
#######################################################################
|
||||
# Software License Agreement (AGPL-3 License)
|
||||
#
|
||||
# OpenViBE SDK Test Software
|
||||
# Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
# Copyright (C) Inria, 2015-2017,V1.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License version 3,
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#######################################################################
|
||||
PROJECT(openvibe-module-fs-test-utf)
|
||||
SET_BUILD_PLATFORM()
|
||||
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} uoFilesTestUTF.cpp)
|
||||
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBECommon")
|
||||
INCLUDE("FindOpenViBEModuleFS")
|
||||
INCLUDE("FindThirdPartyBoost")
|
||||
#INCLUDE("FindThirdPartyBoost_System")
|
||||
INCLUDE("FindThirdPartyBoost_FileSystem")
|
||||
|
||||
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${TESTS_FOLDER}) # Place project in folder unit-test (for some IDE)
|
||||
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${GTEST_BOTH_LIBRARIES})
|
||||
|
||||
ADD_DEFINITIONS("-DDATA_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data\"")
|
||||
ADD_DEFINITIONS("-DTMP_DIR=\"${OVT_TEST_TEMPORARY_DIR}\"")
|
||||
ADD_TEST(NAME uoFSTestUTF COMMAND ${PROJECT_NAME})
|
||||
|
||||
PROJECT(openvibe-module-fs-test)
|
||||
|
||||
# ---------------------------------
|
||||
# Target macros
|
||||
# Defines target operating system, architecture and compiler
|
||||
# ---------------------------------
|
||||
SET_BUILD_PLATFORM()
|
||||
|
||||
# ----------------------
|
||||
# Configure test target
|
||||
# ----------------------
|
||||
|
||||
# Test that needs to called with parameters
|
||||
SET(TEST_WITH_PARAM
|
||||
uoEntryEnumeratorTest.cpp
|
||||
uoFilesTest.cpp
|
||||
)
|
||||
|
||||
# Test that needs to called without parameters
|
||||
SET(TEST_NO_PARAM
|
||||
)
|
||||
|
||||
# Create test sources list
|
||||
# This macro auto-generate ${PROJECT_NAME}.cpp
|
||||
# in the build tree. ${PROJECT_NAME}.cpp is
|
||||
# the test driver called by ctest to run
|
||||
# the different tests added to this target.
|
||||
CREATE_TEST_SOURCELIST (Tests
|
||||
${PROJECT_NAME}.cpp
|
||||
${TEST_WITH_PARAM}
|
||||
${TEST_NO_PARAM}
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} ${Tests})
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBECommon")
|
||||
INCLUDE("FindOpenViBEModuleFS")
|
||||
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${TESTS_FOLDER})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OVT_UNIT_TOOLKIT_LIB} ${OV_MODULE_FS})
|
||||
|
||||
# Add test without parameter to driver
|
||||
FOREACH(test ${TEST_NO_PARAM})
|
||||
GET_FILENAME_COMPONENT(TName ${test} NAME_WE)
|
||||
ADD_TEST(NAME ${TName} COMMAND ${PROJECT_NAME} ${TName})
|
||||
ENDFOREACH()
|
||||
|
||||
# Add test with parameter to driver
|
||||
ADD_TEST(NAME uoEntryEnumeratorTest COMMAND ${PROJECT_NAME} uoEntryEnumeratorTest "${CMAKE_CURRENT_SOURCE_DIR}/data/")
|
||||
ADD_TEST(NAME uoFilesTest COMMAND ${PROJECT_NAME} uoFilesTest "${OVT_TEST_TEMPORARY_DIR}")
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <fs/IEntryEnumerator.h>
|
||||
|
||||
#include "ovtAssert.h"
|
||||
|
||||
class EntryEnumeratorCallBack final : public FS::IEntryEnumeratorCallBack
|
||||
{
|
||||
public:
|
||||
|
||||
bool callback(FS::IEntryEnumerator::IEntry& rEntry, FS::IEntryEnumerator::IAttributes& rAttributes) override
|
||||
{
|
||||
if (rAttributes.isFile()) { m_files.push_back(rEntry.getName()); }
|
||||
return true;
|
||||
}
|
||||
|
||||
void release() { m_files.clear(); }
|
||||
|
||||
std::vector<std::string> m_files;
|
||||
};
|
||||
|
||||
int uoEntryEnumeratorTest(int /*argc*/, char* argv[])
|
||||
{
|
||||
const std::string dataDirectory = argv[1];
|
||||
|
||||
EntryEnumeratorCallBack cb;
|
||||
FS::IEntryEnumerator* enumerator = createEntryEnumerator(cb);
|
||||
enumerator->enumerate((dataDirectory + "*.txt").c_str());
|
||||
|
||||
OVT_ASSERT(cb.m_files.size() == 2, "Failure to enumerate with wildcard prefix");
|
||||
|
||||
cb.release();
|
||||
|
||||
// test wildcard after
|
||||
enumerator->enumerate((dataDirectory + "test*").c_str());
|
||||
|
||||
OVT_ASSERT(cb.m_files.size() == 2, "Failure to enumerate with wildcard suffix");
|
||||
|
||||
cb.release();
|
||||
|
||||
// test wildcard after
|
||||
enumerator->enumerate((dataDirectory + "t*").c_str());
|
||||
|
||||
OVT_ASSERT(cb.m_files.size() == 3, "Failure to enumerate with single letter");
|
||||
|
||||
cb.release();
|
||||
|
||||
// test wildcard before and after
|
||||
enumerator->enumerate((dataDirectory + "*oto*").c_str());
|
||||
|
||||
OVT_ASSERT(cb.m_files.size() == 1, "Failure to enumerate with englobing wildcards");
|
||||
OVT_ASSERT_STREQ(cb.m_files[0], std::string(dataDirectory + "toto.md"), "Failure to enumerate with englobing wildcards");
|
||||
|
||||
cb.release();
|
||||
|
||||
// test wildcard in middle
|
||||
enumerator->enumerate((dataDirectory + "test1*xt").c_str());
|
||||
|
||||
OVT_ASSERT(cb.m_files.size() == 1, "Failure to enumerate with middle wildcard");
|
||||
OVT_ASSERT_STREQ(cb.m_files[0], std::string(dataDirectory + "test1.txt"), "Failure to enumerate with middle wildcard");
|
||||
|
||||
cb.release();
|
||||
|
||||
// error case: no wildcard
|
||||
enumerator->enumerate((dataDirectory + "t").c_str());
|
||||
|
||||
OVT_ASSERT(cb.m_files.empty(), "Failure to enumerate with no wildcard");
|
||||
|
||||
cb.release();
|
||||
|
||||
enumerator->release();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
+127
@@ -0,0 +1,127 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <fs/Files.h>
|
||||
|
||||
#include "ovtAssert.h"
|
||||
#include <iostream>
|
||||
|
||||
int uoFilesTest(int /*argc*/, char* argv[])
|
||||
{
|
||||
std::string outputDirectory = argv[1];
|
||||
|
||||
OVT_ASSERT(FS::Files::directoryExists(outputDirectory.c_str()), "Failure to find test data directory");
|
||||
|
||||
std::string testDir = outputDirectory + "uoFilesTest";
|
||||
std::string testFile = testDir + "/uoFilesTest.txt";
|
||||
|
||||
// test path creation
|
||||
|
||||
FS::Files::createParentPath(testFile.c_str());
|
||||
OVT_ASSERT(FS::Files::directoryExists(testDir.c_str()), "Failure to create directory");
|
||||
OVT_ASSERT(!FS::Files::fileExists(testFile.c_str()), "Failure to create parent path only");
|
||||
|
||||
// test path retrieval methods
|
||||
|
||||
char parentPathFromFile[1024];
|
||||
FS::Files::getParentPath(testFile.c_str(), parentPathFromFile);
|
||||
OVT_ASSERT_STREQ(std::string(parentPathFromFile), testDir, "Failure to retrieve parent path from full path");
|
||||
|
||||
char parentPathFromDir[1024];
|
||||
FS::Files::getParentPath(testDir.c_str(), parentPathFromDir);
|
||||
std::cout << parentPathFromDir << " " << outputDirectory << std::endl;
|
||||
OVT_ASSERT_STREQ((std::string(parentPathFromDir) + "/"), outputDirectory, "Failure to retrieve parent path from path with no slash");
|
||||
|
||||
testDir += "/"; // adding a slash should now give testDir as parent
|
||||
FS::Files::getParentPath(testDir.c_str(), parentPathFromDir);
|
||||
OVT_ASSERT_STREQ((std::string(parentPathFromDir) + "/"), testDir, "Failure to retrieve parent path from path with slash");
|
||||
|
||||
char filename[256];
|
||||
FS::Files::getFilename(testFile.c_str(), filename);
|
||||
OVT_ASSERT_STREQ(std::string(filename), std::string("uoFilesTest.txt"), "Failure to retrieve filename from full path");
|
||||
|
||||
FS::Files::getFilenameWithoutExtension(testFile.c_str(), filename);
|
||||
OVT_ASSERT_STREQ(std::string(filename), std::string("uoFilesTest"), "Failure to retrieve filename with no extension from full path");
|
||||
|
||||
// test file creation and opening
|
||||
|
||||
std::ofstream ostream;
|
||||
FS::Files::openOFStream(ostream, testFile.c_str());
|
||||
OVT_ASSERT(FS::Files::fileExists(testFile.c_str()), "Failure to create file");
|
||||
OVT_ASSERT(ostream.is_open(), "Failure to open file");
|
||||
ostream.close();
|
||||
|
||||
std::string testFileInMissingnDir = testDir + "/newDir/uoFilesTest.txt";
|
||||
FS::Files::openOFStream(ostream, testFileInMissingnDir.c_str());
|
||||
OVT_ASSERT(!FS::Files::fileExists(testFileInMissingnDir.c_str()), "Failure to check for non-existing file");
|
||||
|
||||
std::ifstream istream;
|
||||
FS::Files::openIFStream(istream, testFile.c_str());
|
||||
OVT_ASSERT(istream.is_open(), "Failure to open file in an input stream");
|
||||
istream.close();
|
||||
|
||||
std::fstream fstream;
|
||||
FS::Files::openFStream(fstream, testFile.c_str(), std::ios_base::out);
|
||||
OVT_ASSERT(fstream.is_open(), "Failure to open file in a generic stream");
|
||||
fstream.close();
|
||||
|
||||
auto file = FS::Files::open(testFile.c_str(), "r");
|
||||
OVT_ASSERT(file != nullptr, "Failure to open file in a FILE object");
|
||||
|
||||
file = FS::Files::open(testFileInMissingnDir.c_str(), "r");
|
||||
OVT_ASSERT(file == nullptr, "Failure to return NULL FILE object for non-existing file");
|
||||
|
||||
testDir = outputDirectory + "uoFilesTest2/long spaced/path";
|
||||
FS::Files::createPath(testDir.c_str());
|
||||
OVT_ASSERT(FS::Files::directoryExists(testDir.c_str()), "Failure to create directory with path containing spaces");
|
||||
|
||||
// test equality
|
||||
|
||||
OVT_ASSERT(!FS::Files::equals(testFile.c_str(), testFileInMissingnDir.c_str()), "Failure to compare different files");
|
||||
OVT_ASSERT(FS::Files::equals(testFile.c_str(), testFile.c_str()), "Failure to compare same files");
|
||||
|
||||
|
||||
// test folder copy
|
||||
|
||||
std::string testFile2 = outputDirectory + "uoFilesTest" + "/uoFilesTestChild/uoFilesTest.txt";
|
||||
std::string testTargetDir = outputDirectory + "uoFilesTestCopy";
|
||||
std::string testTargetFile1 = testTargetDir + "/uoFilesTest.txt";
|
||||
std::string testTargetFile2 = testTargetDir + "/uoFilesTestChild/uoFilesTest.txt";
|
||||
// create a subfolder with file
|
||||
FS::Files::createParentPath(testFile2.c_str());
|
||||
std::ofstream ostream2;
|
||||
FS::Files::openOFStream(ostream2, testFile2.c_str());
|
||||
OVT_ASSERT(FS::Files::fileExists(testFile2.c_str()), "Failure to create file in subfolder");
|
||||
OVT_ASSERT(ostream2.is_open(), "Failure to open file");
|
||||
ostream2.close();
|
||||
// copy folder
|
||||
testDir = outputDirectory + "uoFilesTest";
|
||||
FS::Files::copyDirectory(testDir.c_str(), testTargetDir.c_str());
|
||||
OVT_ASSERT(FS::Files::directoryExists(testTargetDir.c_str()), "Failure in copying folder");
|
||||
OVT_ASSERT(FS::Files::fileExists(testTargetFile1.c_str()), "Failure in copying child files of the folder");
|
||||
OVT_ASSERT(FS::Files::fileExists(testTargetFile2.c_str()), "Failure in copying subfolder");
|
||||
// test folder copy on existing folder
|
||||
OVT_ASSERT(!FS::Files::copyDirectory(testDir.c_str(), testTargetDir.c_str()), "Failure: Copy should not have been done if folder exits");
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
#include <fs/Files.h>
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/version.hpp>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <m_ConverterUtf8.h>
|
||||
|
||||
#define TEMP_OUTPUT_DIR TMP_DIR "/オッペンヴィベ"
|
||||
#define TEMP_OUTPUT_DIR_COPY TMP_DIR "/オッペンヴィベ_Copy"
|
||||
#define TEMP_OUTPUT_ASCII_FILE_PATH TEMP_OUTPUT_DIR "/file.txt"
|
||||
#define TEMP_OUTPUT_UTF_FILE_PATH TEMP_OUTPUT_DIR "/日本語.txt"
|
||||
#define TEMP_OUTPUT_UTF_FILE_PATH_COPY TEMP_OUTPUT_DIR_COPY "/日本語.txt"
|
||||
#define TEMP_OUTPUT_ASCII_FILE_PATH_COPY TEMP_OUTPUT_DIR_COPY "/file.txt"
|
||||
|
||||
|
||||
#define TEST_ASCII_FILE_PATH DATA_DIR "/オッペンヴィベ/file.txt"
|
||||
#define TEST_UTF_FILE_PATH DATA_DIR "/オッペンヴィベ/日本語.txt"
|
||||
#define TEST_ASCII_DIR DATA_DIR "/オッペンヴィベ"
|
||||
|
||||
|
||||
TEST(FS_Files_Test_Directories_UTF, validateFileExists)
|
||||
{
|
||||
ASSERT_TRUE(FS::Files::fileExists(TEST_ASCII_FILE_PATH));
|
||||
ASSERT_TRUE(FS::Files::fileExists(TEST_UTF_FILE_PATH));
|
||||
ASSERT_FALSE(FS::Files::fileExists(DATA_DIR "/オッペンヴィベ/file"));
|
||||
ASSERT_FALSE(FS::Files::fileExists(DATA_DIR "/オッペンヴィベ/日本語"));
|
||||
}
|
||||
|
||||
TEST(FS_Files_Test_Directories_UTF, validateDirectoryExists)
|
||||
{
|
||||
ASSERT_FALSE(FS::Files::directoryExists(DATA_DIR "/inexistent"));
|
||||
ASSERT_TRUE(FS::Files::directoryExists(DATA_DIR "/オッペンヴィベ"));
|
||||
}
|
||||
|
||||
TEST(FS_Files_Test_Directories_UTF, validateGetParentPath)
|
||||
{
|
||||
char parentPath[1024];
|
||||
ASSERT_TRUE(FS::Files::getParentPath(TEST_ASCII_FILE_PATH, parentPath));
|
||||
ASSERT_STREQ(DATA_DIR "/オッペンヴィベ", parentPath);
|
||||
}
|
||||
|
||||
TEST(FS_Files_Test_Directories_UTF, validateGetFileName)
|
||||
{
|
||||
char fileName[1024];
|
||||
FS::Files::getFilename(TEST_ASCII_FILE_PATH, fileName);
|
||||
ASSERT_STREQ("file.txt", fileName);
|
||||
FS::Files::getFilename(TEST_UTF_FILE_PATH, fileName);
|
||||
ASSERT_STREQ("日本語.txt", fileName);
|
||||
}
|
||||
|
||||
TEST(FS_Files_Test_Directories_UTF, validateGetFileNameWithoutExtension)
|
||||
{
|
||||
char fileName[1024];
|
||||
FS::Files::getFilenameWithoutExtension(TEST_ASCII_FILE_PATH, fileName);
|
||||
ASSERT_STREQ("file", fileName);
|
||||
FS::Files::getFilenameWithoutExtension(TEST_UTF_FILE_PATH, fileName);
|
||||
ASSERT_STREQ("日本語", fileName);
|
||||
}
|
||||
|
||||
TEST(FS_Files_Test_Directories_UTF, validateGetFileNameExtension)
|
||||
{
|
||||
char extension[1024];
|
||||
FS::Files::getFilenameExtension(TEST_ASCII_FILE_PATH, extension);
|
||||
ASSERT_STREQ(".txt", extension);
|
||||
FS::Files::getFilenameExtension(TEST_UTF_FILE_PATH, extension);
|
||||
ASSERT_STREQ(".txt", extension);
|
||||
}
|
||||
|
||||
TEST(FS_Files_Test_Directories_UTF, validateCreatePath)
|
||||
{
|
||||
FS::Files::removeAll(TEMP_OUTPUT_DIR);
|
||||
ASSERT_FALSE(FS::Files::directoryExists(TEMP_OUTPUT_DIR));
|
||||
ASSERT_TRUE(FS::Files::createPath(TEMP_OUTPUT_DIR));
|
||||
ASSERT_TRUE(FS::Files::directoryExists(TEMP_OUTPUT_DIR));
|
||||
}
|
||||
|
||||
TEST(FS_Files_Test_Directories_UTF, validateCreateParentPath)
|
||||
{
|
||||
FS::Files::removeAll(TEMP_OUTPUT_DIR);
|
||||
ASSERT_FALSE(FS::Files::directoryExists(TEMP_OUTPUT_DIR));
|
||||
ASSERT_TRUE(FS::Files::createParentPath(TEMP_OUTPUT_DIR "/file.txt"));
|
||||
ASSERT_TRUE(FS::Files::directoryExists(TEMP_OUTPUT_DIR));
|
||||
}
|
||||
|
||||
#if BOOST_VERSION / 100 % 1000 >= 55
|
||||
TEST(FS_Files_Test_Directories_UTF, validateCopyFile)
|
||||
{
|
||||
FS::Files::removeAll(TEMP_OUTPUT_ASCII_FILE_PATH);
|
||||
FS::Files::createParentPath(TEMP_OUTPUT_ASCII_FILE_PATH);
|
||||
|
||||
ASSERT_TRUE(FS::Files::copyFile(TEST_ASCII_FILE_PATH, TEMP_OUTPUT_ASCII_FILE_PATH));
|
||||
ASSERT_TRUE(FS::Files::fileExists(TEMP_OUTPUT_ASCII_FILE_PATH));
|
||||
}
|
||||
|
||||
TEST(FS_Files_Test_Directories_UTF, validateCopyDirectory)
|
||||
{
|
||||
ASSERT_TRUE(FS::Files::copyDirectory(TEST_ASCII_DIR, TEMP_OUTPUT_DIR_COPY));
|
||||
ASSERT_TRUE(FS::Files::fileExists(TEMP_OUTPUT_UTF_FILE_PATH_COPY));
|
||||
ASSERT_TRUE(FS::Files::fileExists(TEMP_OUTPUT_ASCII_FILE_PATH_COPY));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
int uoFSFilesTestUTF(int argc, char* argv[])
|
||||
{
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
|
||||
::testing::GTEST_FLAG(filter) = "FS_Files_Test_Directories_UTF.*";
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
#######################################################################
|
||||
# Software License Agreement (AGPL-3 License)
|
||||
#
|
||||
# OpenViBE SDK Test Software
|
||||
# Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
# Copyright (C) Inria, 2015-2017,V1.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License version 3,
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#######################################################################
|
||||
|
||||
PROJECT(openvibe-module-socket-test)
|
||||
|
||||
# ---------------------------------
|
||||
# Target macros
|
||||
# Defines target operating system, architecture and compiler
|
||||
# ---------------------------------
|
||||
SET_BUILD_PLATFORM()
|
||||
|
||||
# ----------------------
|
||||
# Configure test target
|
||||
# ----------------------
|
||||
|
||||
# Test that needs to called with parameters
|
||||
SET(TEST_WITH_PARAM
|
||||
uoSocketClientServerBaseTest.cpp
|
||||
uoSocketClientServerSyncCommunicationTest.cpp
|
||||
uoSocketClientServerASyncCommunicationTest.cpp
|
||||
)
|
||||
|
||||
# Test that needs to called without parameters
|
||||
SET(TEST_NO_PARAM
|
||||
)
|
||||
|
||||
# Create test sources list
|
||||
# This macro auto-generate ${PROJECT_NAME}.cpp
|
||||
# in the build tree. ${PROJECT_NAME}.cpp is
|
||||
# the test driver called by ctest to run
|
||||
# the different tests added to this target.
|
||||
CREATE_TEST_SOURCELIST (Tests
|
||||
${PROJECT_NAME}.cpp
|
||||
${TEST_WITH_PARAM}
|
||||
${TEST_NO_PARAM}
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} ${Tests})
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBECommon")
|
||||
INCLUDE("FindOpenViBEModuleSocket")
|
||||
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${TESTS_FOLDER})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OVT_UNIT_TOOLKIT_LIB} ${OV_MODULE_SOCKET})
|
||||
|
||||
# Add test without parameter to driver
|
||||
FOREACH(test ${TEST_NO_PARAM})
|
||||
GET_FILENAME_COMPONENT(TName ${test} NAME_WE)
|
||||
ADD_TEST(NAME ${TName} COMMAND ${PROJECT_NAME} ${TName})
|
||||
ENDFOREACH()
|
||||
|
||||
# Add test with parameter to driver
|
||||
SET(LOCALHOST "127.0.0.1")
|
||||
SET(TEST_PORT "1024")
|
||||
ADD_TEST(NAME uoSocketClientServerBaseTest COMMAND ${PROJECT_NAME} uoSocketClientServerBaseTest ${LOCALHOST} ${TEST_PORT})
|
||||
ADD_TEST(NAME uoSocketClientServerHostNameTest COMMAND ${PROJECT_NAME} uoSocketClientServerBaseTest "localhost" ${TEST_PORT})
|
||||
ADD_TEST(NAME uoSocketClientServerSyncCommunicationTest COMMAND ${PROJECT_NAME} uoSocketClientServerSyncCommunicationTest ${LOCALHOST} ${TEST_PORT} "1000")
|
||||
ADD_TEST(NAME uoSocketClientServerASyncCommunicationTest COMMAND ${PROJECT_NAME} uoSocketClientServerASyncCommunicationTest ${LOCALHOST} ${TEST_PORT} "1000")
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
#include <cstring>
|
||||
#include <thread>
|
||||
#include <condition_variable>
|
||||
#include <vector>
|
||||
|
||||
#include "socket/IConnection.h"
|
||||
#include "socket/IConnectionClient.h"
|
||||
#include "socket/IConnectionServer.h"
|
||||
|
||||
#include "ovtAssert.h"
|
||||
|
||||
namespace {
|
||||
std::condition_variable gServerStartedCondVar;
|
||||
std::mutex gServerStartedMutex;
|
||||
std::vector<std::string> gReceivedData;
|
||||
bool gServerStarted = false;
|
||||
|
||||
// server callback run from a child thread
|
||||
void onServerListening(const int port, const size_t expectedPacketCount)
|
||||
{
|
||||
gReceivedData.clear();
|
||||
|
||||
Socket::IConnection* clientConnection = nullptr;
|
||||
|
||||
// create server
|
||||
Socket::IConnectionServer* server = Socket::createConnectionServer();
|
||||
server->listen(port);
|
||||
|
||||
// keep the scope braces here, as it ensures mutex is released
|
||||
{
|
||||
std::lock_guard<std::mutex> lockOnServerStart(gServerStartedMutex);
|
||||
gServerStarted = true;
|
||||
}
|
||||
|
||||
// notify main thread that the server is created so that it can connect a single client
|
||||
gServerStartedCondVar.notify_one();
|
||||
|
||||
// loop until all packet are received
|
||||
while (gReceivedData.size() < expectedPacketCount)
|
||||
{
|
||||
if (server->isReadyToReceive()) { clientConnection = server->accept(); }
|
||||
|
||||
if (clientConnection && clientConnection->isReadyToReceive())
|
||||
{
|
||||
size_t dataSize = 0;
|
||||
size_t bytesToReceive = sizeof(dataSize);
|
||||
size_t bytesReceived = 0;
|
||||
char dataBuffer[32];
|
||||
|
||||
// first receive data size
|
||||
while (bytesReceived < bytesToReceive) { bytesReceived += clientConnection->receiveBuffer(&dataSize, bytesToReceive - bytesReceived); }
|
||||
|
||||
// then receive data
|
||||
bytesToReceive = dataSize;
|
||||
bytesReceived = 0;
|
||||
|
||||
while (bytesReceived < bytesToReceive) { bytesReceived += clientConnection->receiveBuffer(dataBuffer, bytesToReceive - bytesReceived); }
|
||||
|
||||
gReceivedData.push_back(std::string(dataBuffer, dataSize));
|
||||
}
|
||||
}
|
||||
|
||||
server->release();
|
||||
}
|
||||
|
||||
void sendData(Socket::IConnectionClient* client, void* data, const size_t size)
|
||||
{
|
||||
const size_t bytesToSend = size;
|
||||
size_t bytesSent = 0;
|
||||
|
||||
while (bytesSent < bytesToSend) { bytesSent += client->sendBuffer(data, bytesToSend - bytesSent); }
|
||||
}
|
||||
} // namespace
|
||||
|
||||
int uoSocketClientServerASyncCommunicationTest(int argc, char* argv[])
|
||||
{
|
||||
OVT_ASSERT(argc == 4, "Failure to retrieve tests arguments. Expecting: server_name port_number packet_count");
|
||||
|
||||
const std::string serverName = argv[1];
|
||||
int portNumber = std::atoi(argv[2]);
|
||||
size_t packetCount = size_t(std::atoi(argv[3]));
|
||||
|
||||
// test asynchronous data transmission from a single client to server:
|
||||
// - launch a server on a background thread
|
||||
// - connect a single client
|
||||
// - make client sending data
|
||||
// - marke server receiving and storing data
|
||||
// - join the thread and do the assertions on received data when no data race is possible
|
||||
|
||||
// create client
|
||||
Socket::IConnectionClient* client = Socket::createConnectionClient();
|
||||
|
||||
// launch server on background thread
|
||||
std::thread serverThread(onServerListening, portNumber, packetCount);
|
||||
|
||||
// wait until the server is started to connect clients
|
||||
std::unique_lock<std::mutex> lock(gServerStartedMutex);
|
||||
gServerStartedCondVar.wait(lock, []() { return gServerStarted; });
|
||||
|
||||
client->connect(serverName.c_str(), portNumber);
|
||||
|
||||
// transmit data
|
||||
// transmission follows the protocol: data size transmission + data transmission
|
||||
const std::string baseData = "Data packet index: ";
|
||||
|
||||
for (size_t sendIndex = 0; sendIndex < packetCount; ++sendIndex)
|
||||
{
|
||||
std::string tmp = baseData + std::to_string(sendIndex);
|
||||
size_t size = tmp.size();
|
||||
sendData(client, &size, sizeof(size));
|
||||
sendData(client, const_cast<char*>(tmp.c_str()), size);
|
||||
}
|
||||
|
||||
serverThread.join(); // wait until the end of the thread
|
||||
|
||||
// release resources
|
||||
client->close();
|
||||
client->release();
|
||||
|
||||
// do the assertion on the main thread
|
||||
OVT_ASSERT(gReceivedData.size() == packetCount, "Failure to retrieve packet count");
|
||||
|
||||
for (size_t receivedIndex = 0; receivedIndex < packetCount; ++receivedIndex)
|
||||
{
|
||||
OVT_ASSERT_STREQ(gReceivedData[receivedIndex], (baseData + std::to_string(receivedIndex)), "Failure to retrieve packet");
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
Executable
+77
@@ -0,0 +1,77 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "socket/IConnection.h"
|
||||
#include "socket/IConnectionClient.h"
|
||||
#include "socket/IConnectionServer.h"
|
||||
|
||||
#include "ovtAssert.h"
|
||||
|
||||
int uoSocketClientServerBaseTest(int argc, char* argv[])
|
||||
{
|
||||
OVT_ASSERT(argc == 3, "Failure to retrieve tests arguments. Expecting: server_name port_number");
|
||||
|
||||
const std::string name = argv[1];
|
||||
char* end;
|
||||
const size_t port = strtol(argv[2], &end, 10);
|
||||
|
||||
// basic tests on server and clients
|
||||
|
||||
Socket::IConnectionServer* server = Socket::createConnectionServer();
|
||||
Socket::IConnectionClient* client = Socket::createConnectionClient();
|
||||
|
||||
OVT_ASSERT(!server->isConnected(), "Failure to check for connection state before connection happens");
|
||||
OVT_ASSERT(server->listen(port) && server->isConnected(), "Failure to make socket listening for input connections");
|
||||
OVT_ASSERT(!server->listen(port), "Failure to generate connection error if the socket is already connected");
|
||||
OVT_ASSERT(!server->isReadyToReceive(), "Failure to check for readyness to receive when no client is connected");
|
||||
OVT_ASSERT(server->close() && !server->isConnected(), "Failure to close connection");
|
||||
OVT_ASSERT(!client->isConnected(), "Failure to check for connection state before connection happens");
|
||||
OVT_ASSERT(!client->connect(name.c_str(), port) && !client->isConnected(), "Failure to generate connection error due to no server currently running");
|
||||
OVT_ASSERT(server->listen(port), "Failure to make socket listening for input connections after a disconnection");
|
||||
OVT_ASSERT(!client->connect("bad_server_name", port) && !client->isConnected(), "Failure to generate connection error caused by wrong server name");
|
||||
OVT_ASSERT(!client->connect(name.c_str(), 0) && !client->isConnected(), "Failure to generate connection error caused by wrong port number");
|
||||
OVT_ASSERT(client->connect(name.c_str(), port) && client->isConnected(), "Failure to connect to server");
|
||||
OVT_ASSERT(client->close() && !client->isConnected(), "Failure to disconnect");
|
||||
|
||||
// Test method getSocketPort
|
||||
|
||||
size_t guessedPort;
|
||||
OVT_ASSERT(server->getSocketPort(guessedPort), "Failure to get socket informations");
|
||||
OVT_ASSERT(guessedPort == port, "Get Socket information should return server port.");
|
||||
OVT_ASSERT(client->connect(name.c_str(), guessedPort) && client->isConnected(), "Failure to connect to server");
|
||||
OVT_ASSERT(client->close() && !client->isConnected(), "Failure to disconnect");
|
||||
OVT_ASSERT(server->close() && !server->isConnected(), "Failure to close connection");
|
||||
|
||||
// Test to connect using port 0
|
||||
|
||||
OVT_ASSERT(server->listen(0) && server->isConnected(), "Failure to make socket listening for input connections");
|
||||
OVT_ASSERT(server->getSocketPort(guessedPort), "Failure to get socket informations");
|
||||
OVT_ASSERT(client->connect(name.c_str(), guessedPort) && client->isConnected(), "Failure to connect to server");
|
||||
OVT_ASSERT(client->close() && !client->isConnected(), "Failure to disconnect");
|
||||
OVT_ASSERT(server->close() && !server->isConnected(), "Failure to close connection");
|
||||
|
||||
// Release ressources
|
||||
|
||||
server->release();
|
||||
client->release();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <atomic>
|
||||
#include <condition_variable>
|
||||
#include <vector>
|
||||
|
||||
#include "socket/IConnection.h"
|
||||
#include "socket/IConnectionClient.h"
|
||||
#include "socket/IConnectionServer.h"
|
||||
|
||||
#include "ovtAssert.h"
|
||||
|
||||
namespace {
|
||||
std::condition_variable gServerStartedCondVar;
|
||||
std::mutex gServerStartedMutex;
|
||||
std::condition_variable gClientConnectedCondVar;
|
||||
std::mutex gClientConnectedMutex;
|
||||
std::vector<std::string> gReceivedData;
|
||||
bool gServerStarted = false;
|
||||
bool gClientConnected = false;
|
||||
|
||||
// server callback run from a child thread
|
||||
void onServerListening(const int port, const size_t packetCount)
|
||||
{
|
||||
// only the server side modifies gReceivedData thus no need to handle race condition
|
||||
gReceivedData.clear();
|
||||
|
||||
Socket::IConnection* clientConnection = nullptr;
|
||||
|
||||
// create server
|
||||
Socket::IConnectionServer* server = Socket::createConnectionServer();
|
||||
server->listen(port);
|
||||
|
||||
// keep the scope braces here, as it ensures mutex is released
|
||||
{
|
||||
std::lock_guard<std::mutex> lockOnServerStart(gServerStartedMutex);
|
||||
gServerStarted = true;
|
||||
}
|
||||
|
||||
gServerStartedCondVar.notify_one();
|
||||
|
||||
// connect clients
|
||||
while (!clientConnection) { if (server->isReadyToReceive()) { clientConnection = server->accept(); } }
|
||||
|
||||
// keep the scope braces here, as it ensures mutex is released
|
||||
{
|
||||
std::lock_guard<std::mutex> lockOnClientConnected(gClientConnectedMutex);
|
||||
gClientConnected = true;
|
||||
}
|
||||
|
||||
gClientConnectedCondVar.notify_one();
|
||||
|
||||
while (gReceivedData.size() < packetCount)
|
||||
{
|
||||
if (clientConnection->isReadyToReceive())
|
||||
{
|
||||
size_t dataSize = 0;
|
||||
char dataBuffer[64];
|
||||
clientConnection->receiveBufferBlocking(&dataSize, sizeof(dataSize));
|
||||
clientConnection->receiveBufferBlocking(dataBuffer, dataSize);
|
||||
gReceivedData.push_back(std::string(dataBuffer, dataSize));
|
||||
}
|
||||
}
|
||||
|
||||
server->release();
|
||||
}
|
||||
} // namespace
|
||||
|
||||
int uoSocketClientServerSyncCommunicationTest(int argc, char* argv[])
|
||||
{
|
||||
OVT_ASSERT(argc == 4, "Failure to retrieve tests arguments. Expecting: server_name port_number packet_count");
|
||||
|
||||
const std::string serverName = argv[1];
|
||||
char* end;
|
||||
const size_t port = strtol(argv[2], &end, 10);
|
||||
size_t packetCount = strtol(argv[3], &end, 10);
|
||||
|
||||
// test synchronous data transmission from a single client to server:
|
||||
// - launch a server on a background thread
|
||||
// - connect single client
|
||||
// - make client sending data
|
||||
// - make server receiving and storing data
|
||||
// - join the thread and do assertions on received data in the main thread
|
||||
|
||||
// create a client
|
||||
Socket::IConnectionClient* client = Socket::createConnectionClient();
|
||||
|
||||
// launch server on background thread
|
||||
std::thread serverThread(onServerListening, port, packetCount);
|
||||
|
||||
// wait until the server is started to connect client
|
||||
std::unique_lock<std::mutex> lockOnServerStart(gServerStartedMutex);
|
||||
gServerStartedCondVar.wait(lockOnServerStart, []() { return gServerStarted; });
|
||||
|
||||
|
||||
client->connect(serverName.c_str(), port);
|
||||
|
||||
// wait until the connection is made to transmit data
|
||||
std::unique_lock<std::mutex> lockOnClientConnected(gClientConnectedMutex);
|
||||
gClientConnectedCondVar.wait(lockOnClientConnected, []() { return gClientConnected; });
|
||||
|
||||
// transmit data
|
||||
// transmission follows the protocol: data size transmission + data transmission
|
||||
const std::string baseData = "Data packet index: ";
|
||||
|
||||
for (size_t sendIndex = 0; sendIndex < packetCount; ++sendIndex)
|
||||
{
|
||||
std::string dataString = baseData + std::to_string(sendIndex);
|
||||
size_t dataSize = dataString.size();
|
||||
|
||||
client->sendBufferBlocking(&dataSize, sizeof(dataSize));
|
||||
client->sendBufferBlocking(dataString.c_str(), dataSize);
|
||||
}
|
||||
|
||||
serverThread.join(); // wait until the end of the thread
|
||||
|
||||
// release resources
|
||||
client->close();
|
||||
client->release();
|
||||
|
||||
// do the assertion on the main thread
|
||||
OVT_ASSERT(gReceivedData.size() == packetCount, "Failure to retrieve packet count");
|
||||
|
||||
for (size_t receivedIndex = 0; receivedIndex < packetCount; ++receivedIndex)
|
||||
{
|
||||
OVT_ASSERT_STREQ(gReceivedData[receivedIndex], (baseData + std::to_string(receivedIndex)), "Failure to retrieve packet");
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
#######################################################################
|
||||
# Software License Agreement (AGPL-3 License)
|
||||
#
|
||||
# OpenViBE SDK Test Software
|
||||
# Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
# Copyright (C) Inria, 2015-2017,V1.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License version 3,
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#######################################################################
|
||||
|
||||
PROJECT(openvibe-module-system-test)
|
||||
|
||||
# ---------------------------------
|
||||
# Target macros
|
||||
# Defines target operating system, architecture and compiler
|
||||
# ---------------------------------
|
||||
SET_BUILD_PLATFORM()
|
||||
|
||||
# ----------------------
|
||||
# Configure test target
|
||||
# ----------------------
|
||||
|
||||
# Test that needs to called with parameters
|
||||
SET(TEST_WITH_PARAM
|
||||
)
|
||||
|
||||
# Test that needs to called without parameters
|
||||
SET(TEST_NO_PARAM
|
||||
uoTimeTest.cpp
|
||||
uoDynamicModuleTest.cpp
|
||||
)
|
||||
|
||||
# Create test sources list
|
||||
# This macro auto-generate ${PROJECT_NAME}.cpp
|
||||
# in the build tree. ${PROJECT_NAME}.cpp is
|
||||
# the test driver called by ctest to run
|
||||
# the different tests added to this target.
|
||||
CREATE_TEST_SOURCELIST (Tests
|
||||
${PROJECT_NAME}.cpp
|
||||
${TEST_WITH_PARAM}
|
||||
${TEST_NO_PARAM}
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} ${Tests})
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBECommon")
|
||||
INCLUDE("FindOpenViBEModuleSystem")
|
||||
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${TESTS_FOLDER})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OVT_UNIT_TOOLKIT_LIB} ${OV_LIBS} ${GTEST_BOTH_LIBRARIES})
|
||||
|
||||
# Add test without parameter to driver
|
||||
FOREACH(test ${TEST_NO_PARAM})
|
||||
GET_FILENAME_COMPONENT(TName ${test} NAME_WE)
|
||||
ADD_TEST(NAME ${TName} COMMAND ${PROJECT_NAME} ${TName})
|
||||
ENDFOREACH()
|
||||
|
||||
# Add test with parameter to driver
|
||||
Executable
+360
@@ -0,0 +1,360 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "system/ovCDynamicModule.h"
|
||||
|
||||
#if defined TARGET_OS_Windows
|
||||
#include <winreg.h>
|
||||
#endif
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
namespace {
|
||||
#if defined TARGET_OS_Windows
|
||||
//const std::string LIB_PATH = OV_CMAKE_PATH_LIB;
|
||||
|
||||
// Microsoft specific
|
||||
const std::string EXISTING_MODULE_NAME = "NTDLL.dll";
|
||||
|
||||
std::string existingModulePath;
|
||||
|
||||
#if defined _WIN64
|
||||
#define CSIDL_SYSTEM_PLATFORM CSIDL_SYSTEM
|
||||
#else
|
||||
#define CSIDL_SYSTEM_PLATFORM CSIDL_SYSTEMX86
|
||||
#endif
|
||||
|
||||
std::string existingModulePathName;
|
||||
const std::string NON_EXISTING_MODULE_NAME = "randomRandomRandom.dll";
|
||||
const std::string NON_EXISTING_SYMBOL = "nonExistingSymbol";
|
||||
const std::string EXISTING_ENVIRONMENT_PATH = "PATH";
|
||||
const std::string EXISTING_REGISTRY_MODULE_NAME = EXISTING_MODULE_NAME;
|
||||
const std::string SYMBOL_NAME_NTDLL = "toupper";
|
||||
|
||||
const HKEY EXISTING_REGISTRY_KEY = HKEY_LOCAL_MACHINE; // 0x80000002
|
||||
const HKEY NON_EXISTING_REGISTRY_KEY = HKEY(ULONG_PTR(LONG(0x800000FF)));
|
||||
|
||||
const std::string EXISTING_REGISTRY_PATH = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer"; // Present on all Windows versions
|
||||
const std::string NON_EXISTING_REGISTRY_PATH = "SOFTWARE\\Random\\Random\\Random";
|
||||
|
||||
int (*toupperSymbol)(int c);
|
||||
bool (*randomRandomRandomSymbol)(int number);
|
||||
|
||||
#elif defined TARGET_OS_Linux || defined TARGET_OS_MacOS
|
||||
static const std::string EXISTING_SYMBOL = "createCSVLib";
|
||||
static const std::string NON_EXISTING_SYMBOL = "nonExistingSymbol";
|
||||
static const std::string LIB_PATH = OV_CMAKE_PATH_LIB;
|
||||
static const std::string EXISTING_MODULE_NAME = "libopenvibe-module-csv.so";
|
||||
static const std::string existingModulePath = LIB_PATH + "/";
|
||||
static const std::string existingModulePathName = existingModulePath + EXISTING_MODULE_NAME;
|
||||
static const std::string NON_EXISTING_MODULE_NAME = "randomRandomRandom.so";
|
||||
#endif
|
||||
} // namespace
|
||||
|
||||
#if defined TARGET_OS_Windows
|
||||
TEST(DynamicModule_Test_Case, loadFromExistingSuccessNoSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_TRUE(dynamicModule.loadFromExisting(EXISTING_MODULE_NAME.c_str()));
|
||||
ASSERT_TRUE(dynamicModule.isLoaded());
|
||||
std::string moduleNameExpected = EXISTING_MODULE_NAME;
|
||||
std::string moduleName = dynamicModule.getFilename();
|
||||
std::transform(moduleNameExpected.begin(), moduleNameExpected.end(), moduleNameExpected.begin(), tolower);
|
||||
std::transform(moduleName.begin(), moduleName.end(), moduleName.begin(), tolower);
|
||||
ASSERT_STREQ(moduleNameExpected.c_str(), moduleName.c_str());
|
||||
|
||||
ASSERT_TRUE(dynamicModule.unload());
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined TARGET_OS_Windows
|
||||
TEST(DynamicModule_Test_Case, loadFromExistingFailNoSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_FALSE(dynamicModule.loadFromExisting(NON_EXISTING_MODULE_NAME.c_str()));
|
||||
ASSERT_EQ(System::CDynamicModule::LogErrorCodes_FailToLoadModule, dynamicModule.getLastError());
|
||||
ASSERT_FALSE(dynamicModule.isLoaded());
|
||||
}
|
||||
#endif
|
||||
|
||||
TEST(DynamicModule_Test_Case, loadFromPathSuccessNoSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_TRUE(dynamicModule.loadFromPath(existingModulePathName.c_str()));
|
||||
ASSERT_TRUE(dynamicModule.isLoaded());
|
||||
std::string moduleNameExpected = existingModulePathName;
|
||||
std::string moduleName = dynamicModule.getFilename();
|
||||
std::transform(moduleNameExpected.begin(), moduleNameExpected.end(), moduleNameExpected.begin(), tolower);
|
||||
std::transform(moduleName.begin(), moduleName.end(), moduleName.begin(), tolower);
|
||||
ASSERT_STREQ(moduleNameExpected.c_str(), moduleName.c_str());
|
||||
|
||||
ASSERT_TRUE(dynamicModule.unload());
|
||||
}
|
||||
|
||||
TEST(DynamicModule_Test_Case, loadFromPathFailNoSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_FALSE(dynamicModule.loadFromPath(NON_EXISTING_MODULE_NAME.c_str()));
|
||||
ASSERT_EQ(System::CDynamicModule::LogErrorCodes_FailToLoadModule, dynamicModule.getLastError());
|
||||
ASSERT_FALSE(dynamicModule.isLoaded());
|
||||
}
|
||||
|
||||
#if defined TARGET_OS_Windows // Must be tested on Linux
|
||||
TEST(DynamicModule_Test_Case, loadFromPathSuccessSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_TRUE(dynamicModule.loadFromPath(existingModulePathName.c_str(), SYMBOL_NAME_NTDLL.c_str()));
|
||||
ASSERT_TRUE(dynamicModule.isLoaded());
|
||||
std::string moduleNameExpected = existingModulePathName;
|
||||
std::string moduleName = dynamicModule.getFilename();
|
||||
std::transform(moduleNameExpected.begin(), moduleNameExpected.end(), moduleNameExpected.begin(), tolower);
|
||||
std::transform(moduleName.begin(), moduleName.end(), moduleName.begin(), tolower);
|
||||
ASSERT_STREQ(moduleNameExpected.c_str(), moduleName.c_str());
|
||||
|
||||
ASSERT_TRUE(dynamicModule.unload());
|
||||
}
|
||||
#endif
|
||||
|
||||
TEST(DynamicModule_Test_Case, loadFromPathSymbolCheckFail)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_FALSE(dynamicModule.loadFromPath(existingModulePathName.c_str(), NON_EXISTING_SYMBOL.c_str()));
|
||||
ASSERT_EQ(System::CDynamicModule::LogErrorCodes_InvalidSymbol, dynamicModule.getLastError());
|
||||
ASSERT_FALSE(dynamicModule.isLoaded());
|
||||
}
|
||||
|
||||
#if defined TARGET_OS_Windows
|
||||
TEST(DynamicModule_Test_Case, loadFromKnownPathSuccessNoSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_TRUE(dynamicModule.loadFromKnownPath(CSIDL_SYSTEM_PLATFORM, EXISTING_MODULE_NAME.c_str()));
|
||||
ASSERT_TRUE(dynamicModule.isLoaded());
|
||||
std::string moduleNameExpected = existingModulePathName;
|
||||
std::string moduleName = dynamicModule.getFilename();
|
||||
std::transform(moduleNameExpected.begin(), moduleNameExpected.end(), moduleNameExpected.begin(), tolower);
|
||||
std::transform(moduleName.begin(), moduleName.end(), moduleName.begin(), tolower);
|
||||
ASSERT_STREQ(moduleNameExpected.c_str(), moduleName.c_str());
|
||||
|
||||
ASSERT_TRUE(System::CDynamicModuleSymbolLoader::getSymbol<>(dynamicModule, SYMBOL_NAME_NTDLL.c_str(), &toupperSymbol));
|
||||
|
||||
ASSERT_TRUE(dynamicModule.unload());
|
||||
}
|
||||
|
||||
TEST(DynamicModule_Test_Case, loadFromKnownPathFailNoSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_FALSE(dynamicModule.loadFromKnownPath(CSIDL_SYSTEM_PLATFORM, NON_EXISTING_MODULE_NAME.c_str()));
|
||||
ASSERT_EQ(System::CDynamicModule::LogErrorCodes_FailToLoadModule, dynamicModule.getLastError());
|
||||
ASSERT_FALSE(dynamicModule.isLoaded());
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined TARGET_OS_Windows
|
||||
TEST(DynamicModule_Test_Case, loadFromEnvironmentSuccessNoSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_TRUE(dynamicModule.loadFromEnvironment(EXISTING_ENVIRONMENT_PATH.c_str(), EXISTING_MODULE_NAME.c_str()));
|
||||
ASSERT_TRUE(dynamicModule.isLoaded());
|
||||
std::string moduleNameExpected = "C:\\WINDOWS\\system32\\ntdll.dll";
|
||||
std::string moduleName = dynamicModule.getFilename();
|
||||
std::transform(moduleNameExpected.begin(), moduleNameExpected.end(), moduleNameExpected.begin(), tolower);
|
||||
std::transform(moduleName.begin(), moduleName.end(), moduleName.begin(), tolower);
|
||||
ASSERT_STREQ(moduleNameExpected.c_str(), moduleName.c_str());
|
||||
ASSERT_TRUE(System::CDynamicModuleSymbolLoader::getSymbol<>(dynamicModule, SYMBOL_NAME_NTDLL.c_str(), &toupperSymbol));
|
||||
|
||||
ASSERT_TRUE(dynamicModule.unload());
|
||||
}
|
||||
|
||||
TEST(DynamicModule_Test_Case, loadFromEnvironmentFailNoSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_FALSE(dynamicModule.loadFromEnvironment(EXISTING_ENVIRONMENT_PATH.c_str(), NON_EXISTING_MODULE_NAME.c_str()));
|
||||
ASSERT_EQ(System::CDynamicModule::LogErrorCodes_ModuleNotFound, dynamicModule.getLastError());
|
||||
ASSERT_FALSE(dynamicModule.isLoaded());
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined TARGET_OS_Windows
|
||||
TEST(DynamicModule_Test_Case, loadFromRegistrySuccessNoSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_TRUE(
|
||||
dynamicModule.loadFromRegistry(EXISTING_REGISTRY_KEY, EXISTING_REGISTRY_PATH.c_str(), nullptr, KEY_READ | KEY_WOW64_64KEY, EXISTING_REGISTRY_MODULE_NAME
|
||||
.c_str()));
|
||||
ASSERT_TRUE(dynamicModule.isLoaded());
|
||||
std::string moduleNameExpected = EXISTING_MODULE_NAME;
|
||||
std::string moduleName = dynamicModule.getFilename();
|
||||
std::transform(moduleNameExpected.begin(), moduleNameExpected.end(), moduleNameExpected.begin(), tolower);
|
||||
std::transform(moduleName.begin(), moduleName.end(), moduleName.begin(), tolower);
|
||||
ASSERT_STREQ(moduleNameExpected.c_str(), moduleName.c_str());
|
||||
|
||||
ASSERT_TRUE(System::CDynamicModuleSymbolLoader::getSymbol<>(dynamicModule, SYMBOL_NAME_NTDLL.c_str(), &toupperSymbol));
|
||||
|
||||
ASSERT_TRUE(dynamicModule.unload());
|
||||
}
|
||||
|
||||
TEST(DynamicModule_Test_Case, loadFromRegistrySuccessSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_TRUE(
|
||||
dynamicModule.loadFromRegistry(EXISTING_REGISTRY_KEY, EXISTING_REGISTRY_PATH.c_str(), nullptr, KEY_READ | KEY_WOW64_64KEY, EXISTING_REGISTRY_MODULE_NAME
|
||||
.c_str(), SYMBOL_NAME_NTDLL.c_str()));
|
||||
ASSERT_TRUE(dynamicModule.isLoaded());
|
||||
std::string moduleNameExpected = EXISTING_MODULE_NAME;
|
||||
std::string moduleName = dynamicModule.getFilename();
|
||||
std::transform(moduleNameExpected.begin(), moduleNameExpected.end(), moduleNameExpected.begin(), tolower);
|
||||
std::transform(moduleName.begin(), moduleName.end(), moduleName.begin(), tolower);
|
||||
ASSERT_STREQ(moduleNameExpected.c_str(), moduleName.c_str());
|
||||
|
||||
ASSERT_TRUE(System::CDynamicModuleSymbolLoader::getSymbol<>(dynamicModule, SYMBOL_NAME_NTDLL.c_str(), &toupperSymbol));
|
||||
|
||||
ASSERT_TRUE(dynamicModule.unload());
|
||||
}
|
||||
|
||||
TEST(DynamicModule_Test_Case, loadFromRegistryFailNoSymbolCheck)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_FALSE(
|
||||
dynamicModule.loadFromRegistry(NON_EXISTING_REGISTRY_KEY, EXISTING_REGISTRY_PATH.c_str(), nullptr, KEY_READ | KEY_WOW64_32KEY,
|
||||
EXISTING_REGISTRY_MODULE_NAME.c_str()));
|
||||
ASSERT_FALSE(dynamicModule.isLoaded());
|
||||
|
||||
ASSERT_FALSE(
|
||||
dynamicModule.loadFromRegistry(EXISTING_REGISTRY_KEY, NON_EXISTING_REGISTRY_PATH.c_str(), nullptr, KEY_READ | KEY_WOW64_32KEY,
|
||||
EXISTING_REGISTRY_MODULE_NAME.c_str()));
|
||||
ASSERT_FALSE(dynamicModule.isLoaded());
|
||||
|
||||
ASSERT_FALSE(
|
||||
dynamicModule.loadFromRegistry(NON_EXISTING_REGISTRY_KEY, EXISTING_REGISTRY_PATH.c_str(), nullptr, KEY_READ | KEY_WOW64_32KEY,
|
||||
EXISTING_REGISTRY_MODULE_NAME.c_str()));
|
||||
ASSERT_FALSE(dynamicModule.isLoaded());
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined TARGET_OS_Windows // Must be tested on Linux
|
||||
TEST(DynamicModule_Test_Case, getSymbolSuccess)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_TRUE(dynamicModule.loadFromPath(existingModulePathName.c_str()));
|
||||
ASSERT_TRUE(dynamicModule.isLoaded());
|
||||
std::string moduleNameExpected = existingModulePathName;
|
||||
std::string moduleName = dynamicModule.getFilename();
|
||||
std::transform(moduleNameExpected.begin(), moduleNameExpected.end(), moduleNameExpected.begin(), tolower);
|
||||
std::transform(moduleName.begin(), moduleName.end(), moduleName.begin(), tolower);
|
||||
ASSERT_STREQ(moduleNameExpected.c_str(), moduleName.c_str());
|
||||
ASSERT_TRUE(System::CDynamicModuleSymbolLoader::getSymbol<>(dynamicModule, SYMBOL_NAME_NTDLL.c_str(), &toupperSymbol));
|
||||
|
||||
const char lowerCase = 'r';
|
||||
char upperCase = char(toupperSymbol(lowerCase));
|
||||
|
||||
ASSERT_EQ(upperCase, 'R');
|
||||
|
||||
ASSERT_TRUE(dynamicModule.unload());
|
||||
}
|
||||
|
||||
TEST(DynamicModule_Test_Case, getSymbolFail)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_TRUE(dynamicModule.loadFromPath(existingModulePathName.c_str()));
|
||||
ASSERT_TRUE(dynamicModule.isLoaded());
|
||||
std::string moduleNameExpected = existingModulePathName;
|
||||
std::string moduleName = dynamicModule.getFilename();
|
||||
std::transform(moduleNameExpected.begin(), moduleNameExpected.end(), moduleNameExpected.begin(), tolower);
|
||||
std::transform(moduleName.begin(), moduleName.end(), moduleName.begin(), tolower);
|
||||
ASSERT_STREQ(moduleNameExpected.c_str(), moduleName.c_str());
|
||||
ASSERT_FALSE(System::CDynamicModuleSymbolLoader::getSymbol<>(dynamicModule, NON_EXISTING_SYMBOL.c_str(), &randomRandomRandomSymbol));
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined TARGET_OS_Windows
|
||||
TEST(DynamicModule_Test_Case, isModulecompatibleSuccess)
|
||||
{
|
||||
#if defined _WIN64
|
||||
ASSERT_FALSE(System::CDynamicModule::isModuleCompatible(existingModulePathName.c_str(), 0x014c)); // x86
|
||||
ASSERT_TRUE(System::CDynamicModule::isModuleCompatible(existingModulePathName.c_str(), 0x8664)); // x64
|
||||
ASSERT_FALSE(System::CDynamicModule::isModuleCompatible(existingModulePathName.c_str(), 0x0200)); // ia64
|
||||
#else
|
||||
ASSERT_TRUE(System::CDynamicModule::isModuleCompatible(existingModulePathName.c_str(), 0x014c)); // x86
|
||||
ASSERT_FALSE(System::CDynamicModule::isModuleCompatible(existingModulePathName.c_str(), 0x8664)); // x64
|
||||
ASSERT_FALSE(System::CDynamicModule::isModuleCompatible(existingModulePathName.c_str(), 0x0200)); // ia64
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined TARGET_OS_Windows
|
||||
TEST(DynamicModule_Test_Case, isModulecompatibleFail)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_FALSE(dynamicModule.loadFromPath(NON_EXISTING_MODULE_NAME.c_str()));
|
||||
ASSERT_FALSE(dynamicModule.isLoaded());
|
||||
}
|
||||
#endif
|
||||
|
||||
TEST(DynamicModule_Test_Case, unloadSuccess)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_TRUE(dynamicModule.loadFromPath(existingModulePathName.c_str()));
|
||||
ASSERT_TRUE(dynamicModule.unload());
|
||||
}
|
||||
|
||||
TEST(DynamicModule_Test_Case, unloadFail)
|
||||
{
|
||||
System::CDynamicModule dynamicModule;
|
||||
|
||||
ASSERT_FALSE(dynamicModule.loadFromPath(NON_EXISTING_MODULE_NAME.c_str()));
|
||||
ASSERT_FALSE(dynamicModule.isLoaded());
|
||||
ASSERT_FALSE(dynamicModule.unload());
|
||||
}
|
||||
|
||||
int uoDynamicModuleTest(int argc, char* argv[])
|
||||
{
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
|
||||
#if defined TARGET_OS_Windows
|
||||
BOOL bIsWow64 = FALSE;
|
||||
|
||||
if (!IsWow64Process(GetCurrentProcess(), &bIsWow64)) { return false; }
|
||||
|
||||
existingModulePath = bIsWow64 ? "C:\\WINDOWS\\SysWOW64\\" : "C:\\WINDOWS\\system32\\";
|
||||
existingModulePathName = existingModulePath + EXISTING_MODULE_NAME;
|
||||
#endif
|
||||
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
+218
@@ -0,0 +1,218 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <limits>
|
||||
#include <vector>
|
||||
#include <cmath>
|
||||
#include <tuple>
|
||||
#include <chrono>
|
||||
|
||||
#include "openvibe/CTime.hpp"
|
||||
#include "system/ovCTime.h"
|
||||
|
||||
#include "ovtAssert.h"
|
||||
|
||||
//
|
||||
// \note This test should be improved. Some improvements could be:
|
||||
// - Compare clock results to gold standard
|
||||
// - True testing of monotonic state
|
||||
// - Stress tests on longer period
|
||||
//
|
||||
|
||||
// \brief Calibrate sleep function to estimate the extra time not spent at sleeping
|
||||
uint64_t calibrateSleep(const size_t nSample, bool (*sleepFunction)(uint64_t), uint64_t (*timeFunction)())
|
||||
{
|
||||
uint64_t maxTime = 0;
|
||||
for (size_t i = 0; i < nSample; ++i)
|
||||
{
|
||||
const uint64_t preTime = timeFunction();
|
||||
sleepFunction(0);
|
||||
const uint64_t processingTime = timeFunction() - preTime;
|
||||
|
||||
if (processingTime > maxTime) { maxTime = processingTime; }
|
||||
}
|
||||
|
||||
return maxTime;
|
||||
}
|
||||
|
||||
// \brief Record sleep function precision
|
||||
std::vector<uint64_t> testSleep(const std::vector<uint64_t>& sleepTimes, bool (*sleepFunction)(uint64_t), uint64_t (*timeFunction)())
|
||||
{
|
||||
std::vector<uint64_t> effectiveSleepTimes;
|
||||
for (auto time : sleepTimes)
|
||||
{
|
||||
const uint64_t preTime = timeFunction();
|
||||
sleepFunction(time);
|
||||
effectiveSleepTimes.push_back(timeFunction() - preTime);
|
||||
}
|
||||
|
||||
return effectiveSleepTimes;
|
||||
}
|
||||
|
||||
// \brief Return a warning count that is incremented when sleep function did not meet following requirements:
|
||||
// - sleep enough time
|
||||
// - sleep less than the expected time + delta
|
||||
size_t assessSleepTestResult(const std::vector<uint64_t>& expected, const std::vector<uint64_t>& result, const uint64_t delta, const uint64_t epsilon)
|
||||
{
|
||||
size_t warningCount = 0;
|
||||
for (size_t i = 0; i < expected.size(); ++i)
|
||||
{
|
||||
if (result[i] + epsilon < expected[i] || result[i] > (expected[i] + delta + epsilon))
|
||||
{
|
||||
std::cerr << "WARNING: Failure to sleep the right amount of time: [expected|result] = "
|
||||
<< OpenViBE::CTime(expected[i]) << "|" << OpenViBE::CTime(result[i]) << std::endl;
|
||||
warningCount++;
|
||||
}
|
||||
}
|
||||
|
||||
return warningCount;
|
||||
}
|
||||
|
||||
// \brief Record clock function data (spin test taken from OpenViBE). Return a tuple with:
|
||||
// - bool = monotonic state
|
||||
// - std::vector<uint64_t> = all the cumulative steps
|
||||
std::tuple<bool, std::vector<uint64_t>> testClock(const uint64_t samplePeriod, const unsigned sampleCountGuess, uint64_t (*timeFunction)())
|
||||
{
|
||||
std::vector<uint64_t> cumulativeSteps;
|
||||
cumulativeSteps.reserve(sampleCountGuess);
|
||||
|
||||
bool monotonic = true;
|
||||
const uint64_t startTime = timeFunction();
|
||||
uint64_t nowTime = startTime;
|
||||
uint64_t previousTime = nowTime;
|
||||
|
||||
while (nowTime - startTime < samplePeriod)
|
||||
{
|
||||
nowTime = timeFunction();
|
||||
if (nowTime > previousTime) { cumulativeSteps.push_back(nowTime - previousTime); }
|
||||
else if (nowTime < previousTime)
|
||||
{
|
||||
monotonic = false;
|
||||
break;
|
||||
}
|
||||
previousTime = nowTime;
|
||||
}
|
||||
|
||||
return std::make_tuple(monotonic, cumulativeSteps);
|
||||
}
|
||||
|
||||
// \brief Compute jitter measurements for 32:32 time. Return a tuple with:
|
||||
// - double = mean
|
||||
// - double = max deviation from mean
|
||||
// - double = RMSE
|
||||
std::tuple<double, double, double> assessTimeClock(const std::vector<uint64_t>& measurements)
|
||||
{
|
||||
double jitterMax = 0.0;
|
||||
double jitterMSE = 0.0;
|
||||
double mean = 0.0;
|
||||
|
||||
// compute mean
|
||||
for (auto& data : measurements)
|
||||
{
|
||||
// convert data
|
||||
auto seconds = data >> 32;
|
||||
auto microseconds = ((data & 0xFFFFFFFFLL) * 1000000LL) >> 32;
|
||||
std::chrono::microseconds chronoData = std::chrono::seconds(seconds) + std::chrono::microseconds(microseconds);
|
||||
|
||||
mean += double(chronoData.count()) / (1000 * measurements.size());
|
||||
}
|
||||
|
||||
// compute deviations
|
||||
for (auto& data : measurements)
|
||||
{
|
||||
// convert data
|
||||
auto seconds = data >> 32;
|
||||
auto microseconds = ((data & 0xFFFFFFFFLL) * 1000000LL) >> 32;
|
||||
std::chrono::microseconds chronoData = std::chrono::seconds(seconds) + std::chrono::microseconds(microseconds);
|
||||
|
||||
const double deviation = std::abs(double(chronoData.count()) / 1000 - mean);
|
||||
jitterMSE += std::pow(deviation, 2) / measurements.size();
|
||||
|
||||
if (deviation - jitterMax > std::numeric_limits<double>::epsilon()) { jitterMax = deviation; }
|
||||
}
|
||||
|
||||
return std::make_tuple(mean, jitterMax, std::sqrt(jitterMSE));
|
||||
}
|
||||
|
||||
int uoTimeTest(int /*argc*/, char* /*argv*/[])
|
||||
{
|
||||
// This is a very theoretical test. But if it returns false, we can
|
||||
// assume that a steady clock is not available on the test
|
||||
// platform. If it returns true, it just means that the internal clock
|
||||
// says it is steady...
|
||||
OVT_ASSERT(System::Time::isClockSteady(), "Failure to retrieve a steady clock");
|
||||
|
||||
// Same as above.
|
||||
// The test is set to 1ms at it is a requirement for OpenViBE clocks
|
||||
OVT_ASSERT(System::Time::checkResolution(1), "Failure to check for resolution");
|
||||
|
||||
// A stress test to check no overflow happens
|
||||
OVT_ASSERT(System::Time::checkResolution(std::numeric_limits<size_t >::max()), "Failure to check for resolution");
|
||||
|
||||
//
|
||||
// zSleep() function test
|
||||
//
|
||||
|
||||
const std::vector<uint64_t> expectedSleepData = {
|
||||
0x80000000LL, 0x40000000LL, 0x20000000LL, 0x10000000LL,
|
||||
0x80000000LL, 0x40000000LL, 0x20000000LL, 0x10000000LL,
|
||||
0x08000000LL, 0x04000000LL, 0x02000000LL, 0x01000000LL,
|
||||
0x08000000LL, 0x04000000LL, 0x02000000LL, 0x01000000LL
|
||||
};
|
||||
|
||||
// calibrate sleep function
|
||||
const auto deltaTime = calibrateSleep(1000, System::Time::zsleep, System::Time::zgetTime);
|
||||
|
||||
std::cout << "INFO: Delta time for zsleep calibration = " << OpenViBE::CTime(deltaTime) << std::endl;
|
||||
|
||||
const auto resultSleepData = testSleep(expectedSleepData, System::Time::zsleep, System::Time::zgetTime);
|
||||
|
||||
OVT_ASSERT(resultSleepData.size() == expectedSleepData.size(), "Failure to run zsleep tests");
|
||||
|
||||
const size_t warningCount = assessSleepTestResult(expectedSleepData, resultSleepData, deltaTime, OpenViBE::CTime(0.005).time());
|
||||
|
||||
// relax this threshold in case there is some recurrent problems
|
||||
// according to the runtime environment
|
||||
OVT_ASSERT(warningCount <= 2, "Failure to zsleep the right amount of time");
|
||||
|
||||
//
|
||||
// zGetTime() function test
|
||||
//
|
||||
|
||||
// the sample count guess was found in an empiric way
|
||||
auto resultGetTimeData = testClock(OpenViBE::CTime(0.5).time(), 500000, System::Time::zgetTime);
|
||||
|
||||
OVT_ASSERT(std::get<0>(resultGetTimeData), "Failure in zgetTime() test: the clock is not monotonic");
|
||||
|
||||
auto clockMetrics = assessTimeClock(std::get<1>(resultGetTimeData));
|
||||
|
||||
std::cout << "INFO: Sample count for getTime() = " << std::get<1>(resultGetTimeData).size() << std::endl;
|
||||
std::cout << "INFO: Mean step in ms for getTime() = " << std::get<0>(clockMetrics) << std::endl;
|
||||
std::cout << "INFO: Max deviation in ms for getTime() = " << std::get<1>(clockMetrics) << std::endl;
|
||||
std::cout << "INFO: RMSE in ms for getTime() = " << std::get<2>(clockMetrics) << std::endl;
|
||||
|
||||
// We expect at least 1ms resolution
|
||||
const double resolutionDelta = std::get<0>(clockMetrics) - 1;
|
||||
OVT_ASSERT(resolutionDelta <= std::numeric_limits<double>::epsilon(), "Failure in zgetTime() test: the clock resolution does not match requirements");
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
#######################################################################
|
||||
# Software License Agreement (AGPL-3 License)
|
||||
#
|
||||
# OpenViBE SDK Test Software
|
||||
# Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
# Copyright (C) Inria, 2015-2017,V1.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License version 3,
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#######################################################################
|
||||
|
||||
FUNCTION(SETUP_TEST)
|
||||
SET_BUILD_PLATFORM()
|
||||
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBECommon")
|
||||
INCLUDE("FindOpenViBEModuleXML")
|
||||
INCLUDE("FindOpenViBEModuleFS")
|
||||
INCLUDE("FindThirdPartyBoost")
|
||||
INCLUDE("FindThirdPartyBoost_FileSystem")
|
||||
|
||||
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${TESTS_FOLDER}) # Place project in folder unit-test (for some IDE)
|
||||
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${GTEST_BOTH_LIBRARIES})
|
||||
|
||||
# Add test with parameter to driver
|
||||
ADD_DEFINITIONS("-DDATA_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/data\"")
|
||||
ADD_DEFINITIONS("-DTEMP_DIR=\"${OVT_TEST_TEMPORARY_DIR}\"")
|
||||
ENDFUNCTION()
|
||||
|
||||
PROJECT(openvibe-module-xml-reader-test)
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} uoXMLReaderTest.cpp)
|
||||
SETUP_TEST()
|
||||
ADD_TEST(NAME uoXMLReaderTest COMMAND ${PROJECT_NAME})
|
||||
|
||||
PROJECT(openvibe-module-xml-writer-test)
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} uoXMLWriterTest.cpp)
|
||||
SETUP_TEST()
|
||||
ADD_TEST(NAME uoXMLWriterTest COMMAND ${PROJECT_NAME})
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
<Document name="Français">
|
||||
<Node>Français 1 (àèáéîôïç)</Node>
|
||||
<Node>Français 2 (àèáéîôïç)</Node>
|
||||
<Node>Français 3 (àèáéîôïç)</Node>
|
||||
</Document>
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
<Document name="NB SP">
|
||||
<Node>NB SP 1</Node>
|
||||
<Node>NB SP 2</Node>
|
||||
<Node>NB SP 3</Node>
|
||||
</Document>
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<Document name="test_reference">
|
||||
<NodeWithChildren>
|
||||
<ChildNodeWithData>child node data with more than 10 alphanumeric characters</ChildNodeWithData>
|
||||
<ChildNodeEmpty></ChildNodeEmpty>
|
||||
<ChildNodeWithChildren>
|
||||
<ChildNodeEmpty></ChildNodeEmpty>
|
||||
</ChildNodeWithChildren>
|
||||
</NodeWithChildren>
|
||||
<NodeWithData status="hasData">node data with special characters <>,;:!?./&"'(-_)=~#{[|`\^@]}/*-+</NodeWithData>
|
||||
<NodeEmptyWithNumber666 status="noData" ref="test"></NodeEmptyWithNumber666>
|
||||
</Document>
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
<Document name="日本語">
|
||||
<Node>日本語 1</Node>
|
||||
<Node>日本語 2</Node>
|
||||
<Node>日本語 3</Node>
|
||||
</Document>
|
||||
+202
@@ -0,0 +1,202 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
|
||||
#include "xml/IReader.h"
|
||||
#include "xml/IXMLHandler.h"
|
||||
#include <fs/Files.h>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
class CReaderCallBack final : public XML::IReaderCallBack
|
||||
{
|
||||
public:
|
||||
|
||||
struct SNode
|
||||
{
|
||||
std::string name;
|
||||
std::string data;
|
||||
std::map<std::string, std::string> attributes;
|
||||
std::vector<std::shared_ptr<SNode>> children;
|
||||
std::shared_ptr<SNode> parent{ nullptr };
|
||||
};
|
||||
|
||||
std::shared_ptr<SNode> m_CurrentNode{ nullptr };
|
||||
|
||||
protected:
|
||||
|
||||
void openChild(const char* name, const char** attributeName, const char** attributeValue, const size_t nAttribute) override
|
||||
{
|
||||
auto node = std::make_shared<SNode>();
|
||||
|
||||
if (m_CurrentNode)
|
||||
{
|
||||
node->parent = m_CurrentNode;
|
||||
m_CurrentNode->children.push_back(node);
|
||||
}
|
||||
|
||||
m_CurrentNode = node;
|
||||
m_CurrentNode->name = name;
|
||||
|
||||
for (size_t i = 0; i < nAttribute; ++i) { m_CurrentNode->attributes[attributeName[i]] = attributeValue[i]; }
|
||||
}
|
||||
|
||||
void processChildData(const char* data) override { m_CurrentNode->data = data; }
|
||||
|
||||
void closeChild() override { if (m_CurrentNode->parent) { m_CurrentNode = m_CurrentNode->parent; } }
|
||||
};
|
||||
|
||||
TEST(XML_Reader_Test_Case, validateReader)
|
||||
{
|
||||
std::string dataFile = std::string(DATA_DIR) + "/ref_data.xml";
|
||||
|
||||
CReaderCallBack callback;
|
||||
XML::IReader* xmlReader = createReader(callback);
|
||||
|
||||
FILE* inputTestDataFile = fopen(dataFile.c_str(), "r");
|
||||
|
||||
ASSERT_NE(nullptr, inputTestDataFile);
|
||||
|
||||
char dataBuffer[1024];
|
||||
while (!feof(inputTestDataFile))
|
||||
{
|
||||
size_t length = std::fread(dataBuffer, 1, sizeof(dataBuffer), inputTestDataFile);
|
||||
xmlReader->processData(dataBuffer, length);
|
||||
}
|
||||
std::fclose(inputTestDataFile);
|
||||
|
||||
xmlReader->release();
|
||||
|
||||
// Analyze results
|
||||
|
||||
auto rootNode = callback.m_CurrentNode;
|
||||
|
||||
// Root node check
|
||||
ASSERT_EQ("Document", rootNode->name);
|
||||
ASSERT_EQ(1, rootNode->attributes.size());
|
||||
ASSERT_EQ("test_reference", rootNode->attributes["name"]);
|
||||
|
||||
ASSERT_EQ(3, rootNode->children.size());
|
||||
|
||||
auto complexChild = rootNode->children[0];
|
||||
auto dataChild = rootNode->children[1];
|
||||
auto emptyChild = rootNode->children[2];
|
||||
|
||||
// Simple child with data check
|
||||
ASSERT_EQ("NodeWithData", dataChild->name);
|
||||
ASSERT_EQ("node data with special characters <>,;:!?./&\"'(-_)=~#{[|`\\^@]}/*-+", dataChild->data);
|
||||
ASSERT_EQ(1, dataChild->attributes.size());
|
||||
ASSERT_EQ("hasData", dataChild->attributes["status"]);
|
||||
|
||||
// Simple child with no data and multiple attributes check
|
||||
ASSERT_EQ("NodeEmptyWithNumber666", emptyChild->name);
|
||||
ASSERT_EQ(2, emptyChild->attributes.size());
|
||||
ASSERT_EQ("noData", emptyChild->attributes["status"]);
|
||||
ASSERT_EQ("test", emptyChild->attributes["ref"]);
|
||||
|
||||
// Complex child check
|
||||
ASSERT_EQ("NodeWithChildren", complexChild->name);
|
||||
ASSERT_TRUE(complexChild->attributes.empty());
|
||||
|
||||
ASSERT_EQ(3, complexChild->children.size());
|
||||
|
||||
dataChild = complexChild->children[0];
|
||||
emptyChild = complexChild->children[1];
|
||||
complexChild = complexChild->children[2];
|
||||
|
||||
ASSERT_EQ("ChildNodeWithData", dataChild->name);
|
||||
ASSERT_EQ("child node data with more than 10 alphanumeric characters", dataChild->data);
|
||||
ASSERT_EQ(0, dataChild->attributes.size());
|
||||
|
||||
ASSERT_EQ("ChildNodeEmpty", emptyChild->name);
|
||||
ASSERT_TRUE(emptyChild->attributes.empty());
|
||||
|
||||
ASSERT_EQ("ChildNodeWithChildren", complexChild->name);
|
||||
ASSERT_TRUE(complexChild->attributes.empty());
|
||||
ASSERT_EQ(1, complexChild->children.size());
|
||||
}
|
||||
|
||||
TEST(XML_Reader_Test_Case, validateHandlerReadJapanese)
|
||||
{
|
||||
const std::string dataFile = std::string(DATA_DIR) + "/日本語/ref_data_jp.xml";
|
||||
|
||||
XML::IXMLHandler* xmlHandler = XML::createXMLHandler();
|
||||
XML::IXMLNode* rootNode = xmlHandler->parseFile(dataFile.c_str());
|
||||
|
||||
ASSERT_NE(nullptr, rootNode);
|
||||
ASSERT_EQ(std::string("Document"), rootNode->getName());
|
||||
ASSERT_TRUE(rootNode->hasAttribute("name"));
|
||||
ASSERT_EQ(std::string("日本語"), rootNode->getAttribute("name"));
|
||||
ASSERT_EQ(3, rootNode->getChildCount());
|
||||
|
||||
ASSERT_STREQ("日本語 1", rootNode->getChild(0)->getPCData());
|
||||
|
||||
xmlHandler->release();
|
||||
}
|
||||
|
||||
TEST(XML_Reader_Test_Case, validateHandlerReadFrench)
|
||||
{
|
||||
const std::string dataFile = std::string(DATA_DIR) + "/Français/ref_data_fr.xml";
|
||||
|
||||
XML::IXMLHandler* xmlHandler = XML::createXMLHandler();
|
||||
XML::IXMLNode* rootNode = xmlHandler->parseFile(dataFile.c_str());
|
||||
|
||||
ASSERT_NE(nullptr, rootNode);
|
||||
ASSERT_EQ(std::string("Document"), rootNode->getName());
|
||||
ASSERT_TRUE(rootNode->hasAttribute("name"));
|
||||
ASSERT_EQ(std::string("Français"), rootNode->getAttribute("name"));
|
||||
ASSERT_EQ(3, rootNode->getChildCount());
|
||||
|
||||
ASSERT_STREQ("Français 1 (àèáéîôïç)", rootNode->getChild(0)->getPCData());
|
||||
|
||||
xmlHandler->release();
|
||||
}
|
||||
|
||||
TEST(XML_Reader_Test_Case, validateHandlerReadNBSP)
|
||||
{
|
||||
const std::string dataFile = std::string(DATA_DIR) + "/NB\xC2\xA0SP/ref_data_nbsp.xml";
|
||||
|
||||
XML::IXMLHandler* xmlHandler = XML::createXMLHandler();
|
||||
XML::IXMLNode* rootNode = xmlHandler->parseFile(dataFile.c_str());
|
||||
|
||||
ASSERT_NE(nullptr, rootNode);
|
||||
ASSERT_EQ(std::string("Document"), rootNode->getName());
|
||||
ASSERT_TRUE(rootNode->hasAttribute("name"));
|
||||
ASSERT_EQ(std::string("NB\xC2\xA0SP"), rootNode->getAttribute("name"));
|
||||
ASSERT_EQ(3, rootNode->getChildCount());
|
||||
|
||||
ASSERT_STREQ("NB\xC2\xA0SP 1", rootNode->getChild(0)->getPCData());
|
||||
|
||||
xmlHandler->release();
|
||||
}
|
||||
|
||||
int uoXMLReaderTest(int argc, char* argv[])
|
||||
{
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
|
||||
::testing::GTEST_FLAG(filter) = "XML_Reader_Test_Case.*";
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
+176
@@ -0,0 +1,176 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (AGPL-3 License)
|
||||
*
|
||||
* OpenViBE SDK Test Software
|
||||
* Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
* Copyright (C) Inria, 2015-2017,V1.0
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <cstdio>
|
||||
|
||||
#include <xml/IWriter.h>
|
||||
#include <xml/IXMLHandler.h>
|
||||
|
||||
#include <fs/Files.h>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <boost/filesystem.hpp>
|
||||
|
||||
class CWriterCallBack : public XML::IWriterCallBack
|
||||
{
|
||||
public:
|
||||
|
||||
CWriterCallBack(const char* filename) { m_file = FS::Files::open(filename, "wb"); }
|
||||
~CWriterCallBack() override { if (m_file) { std::fclose(m_file); } } // in case release is not called
|
||||
|
||||
void write(const char* outputData) override { if (m_file) { std::fputs(outputData, m_file); } }
|
||||
|
||||
// necessary thjor the test to close the stream and re-open it for inspection
|
||||
void release()
|
||||
{
|
||||
std::fclose(m_file);
|
||||
m_file = nullptr;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
std::FILE* m_file{ nullptr };
|
||||
};
|
||||
|
||||
TEST(XML_Writer_Test_Case, validateWriter)
|
||||
{
|
||||
std::string expectedFile = DATA_DIR "/ref_data.xml";
|
||||
std::string outputFile = TEMP_DIR "/uoXMLWriterTest.xml";
|
||||
|
||||
FS::Files::createPath(TEMP_DIR);
|
||||
ASSERT_TRUE(FS::Files::directoryExists(TEMP_DIR));
|
||||
|
||||
FS::Files::removeAll(outputFile.c_str());
|
||||
ASSERT_FALSE(FS::Files::fileExists(outputFile.c_str()));
|
||||
|
||||
// The test serializes a known xml sequence and compares the output
|
||||
// to a reference.
|
||||
|
||||
// serializing
|
||||
CWriterCallBack callback(outputFile.c_str());
|
||||
|
||||
XML::IWriter* writer = createWriter(callback);
|
||||
|
||||
writer->openChild("Document"); ///< Document Node
|
||||
writer->setAttribute("name", "test_reference");
|
||||
|
||||
writer->openChild("NodeWithChildren"); ///< NodeWithChildren Node
|
||||
|
||||
writer->openChild("ChildNodeWithData");
|
||||
writer->setChildData("child node data with more than 10 alphanumeric characters");
|
||||
writer->closeChild();
|
||||
|
||||
writer->openChild("ChildNodeEmpty");
|
||||
writer->closeChild();
|
||||
|
||||
writer->openChild("ChildNodeWithChildren");
|
||||
writer->openChild("ChildNodeEmpty");
|
||||
writer->closeChild();
|
||||
writer->closeChild();
|
||||
|
||||
writer->closeChild(); ///< NodeWithChildren END
|
||||
|
||||
writer->openChild("NodeWithData");
|
||||
writer->setAttribute("status", "hasData");
|
||||
writer->setChildData("node data with special characters <>,;:!?./&\"'(-_)=~#{[|`\\^@]}/*-+");
|
||||
writer->closeChild();
|
||||
|
||||
writer->openChild("NodeEmptyWithNumber666");
|
||||
writer->setAttribute("status", "noData");
|
||||
writer->setAttribute("ref", "test");
|
||||
writer->closeChild();
|
||||
|
||||
writer->closeChild(); ///< Document Node END
|
||||
|
||||
writer->release();
|
||||
callback.release();
|
||||
|
||||
// comparison part
|
||||
std::ifstream generatedStream;
|
||||
std::ifstream expectedStream;
|
||||
|
||||
FS::Files::openIFStream(generatedStream, outputFile.c_str());
|
||||
FS::Files::openIFStream(expectedStream, expectedFile.c_str());
|
||||
|
||||
ASSERT_TRUE(generatedStream.is_open());
|
||||
ASSERT_TRUE(expectedStream.is_open());
|
||||
|
||||
std::string generatedString;
|
||||
std::string expectedString;
|
||||
|
||||
while (std::getline(expectedStream, expectedString))
|
||||
{
|
||||
std::getline(generatedStream, generatedString);
|
||||
ASSERT_EQ(expectedString, generatedString);
|
||||
}
|
||||
|
||||
// last check to verify the expected file has no additional line
|
||||
std::getline(generatedStream, generatedString);
|
||||
}
|
||||
|
||||
TEST(XML_Writer_Test_Case, validateHandlerWriteToJapanesePath)
|
||||
{
|
||||
std::string expectedFile = DATA_DIR "/日本語/ref_data_jp.xml";
|
||||
std::string outputFile = TEMP_DIR "/オッペンヴィベ/日本語.xml";
|
||||
|
||||
FS::Files::createPath(TEMP_DIR);
|
||||
ASSERT_TRUE(FS::Files::directoryExists(TEMP_DIR));
|
||||
|
||||
FS::Files::removeAll(outputFile.c_str());
|
||||
ASSERT_FALSE(FS::Files::fileExists(outputFile.c_str()));
|
||||
|
||||
XML::IXMLHandler* xmlHandler = XML::createXMLHandler();
|
||||
std::string testData = "<Document name=\"日本語\"><Node>日本語 1</Node><Node>日本語 2</Node><Node>日本語 3</Node></Document>";
|
||||
XML::IXMLNode* rootNode = xmlHandler->parseString(testData.c_str(), testData.size());
|
||||
xmlHandler->writeXMLInFile(*rootNode, outputFile.c_str());
|
||||
|
||||
// comparison part
|
||||
std::ifstream generatedStream;
|
||||
std::ifstream expectedStream;
|
||||
|
||||
FS::Files::openIFStream(generatedStream, outputFile.c_str());
|
||||
FS::Files::openIFStream(expectedStream, expectedFile.c_str());
|
||||
|
||||
ASSERT_TRUE(generatedStream.is_open());
|
||||
ASSERT_TRUE(expectedStream.is_open());
|
||||
|
||||
std::string generatedString;
|
||||
std::string expectedString;
|
||||
|
||||
while (std::getline(expectedStream, expectedString))
|
||||
{
|
||||
std::getline(generatedStream, generatedString);
|
||||
ASSERT_EQ(expectedString, generatedString);
|
||||
}
|
||||
|
||||
// last check to verify the expected file has no additional line
|
||||
std::getline(generatedStream, generatedString);
|
||||
}
|
||||
|
||||
int uoXMLWriterTest(int argc, char* argv[])
|
||||
{
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
|
||||
::testing::GTEST_FLAG(filter) = "XML_Writer_Test_Case.*";
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
#######################################################################
|
||||
# Software License Agreement (AGPL-3 License)
|
||||
#
|
||||
# OpenViBE SDK Test Software
|
||||
# Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
# Copyright (C) Inria, 2015-2017,V1.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License version 3,
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#######################################################################
|
||||
|
||||
|
||||
FUNCTION(SETUP_TEST)
|
||||
SET_BUILD_PLATFORM()
|
||||
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${GTEST_BOTH_LIBRARIES})
|
||||
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBECommon")
|
||||
ENDFUNCTION()
|
||||
|
||||
PROJECT(openvibe-plugin-stream-codecs-test)
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} uoStreamedMatrixTest.cpp ../common/ovtKernelContext.cpp)
|
||||
SETUP_TEST()
|
||||
|
||||
ADD_TEST(NAME uoStreamedMatrixTest COMMAND ${PROJECT_NAME})
|
||||
Executable
+141
@@ -0,0 +1,141 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "ovtAssert.h"
|
||||
|
||||
#include "../common/ovtKernelContext.h"
|
||||
#include <openvibe/ov_all.h>
|
||||
|
||||
#include <ovp_global_defines.h>
|
||||
|
||||
namespace {
|
||||
const char* kernelConfig = nullptr;
|
||||
|
||||
class StreamedMatrixTest : public testing::Test
|
||||
{
|
||||
protected:
|
||||
|
||||
StreamedMatrixTest() { }
|
||||
~StreamedMatrixTest() override { }
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
m_kernelCtx.initialize();
|
||||
m_kernelCtx->getPluginManager().addPluginsFromFiles(m_kernelCtx->getConfigurationManager().expand("${Path_Lib}/*openvibe-plugins-sdk-stream-codecs*"));
|
||||
|
||||
m_decoderId = OpenViBE::CIdentifier::undefined();
|
||||
m_decoderId = m_kernelCtx->getAlgorithmManager().createAlgorithm(OVP_GD_ClassId_Algorithm_StreamedMatrixDecoder);
|
||||
ASSERT_NE(OpenViBE::CIdentifier::undefined(), m_decoderId);
|
||||
|
||||
m_encoderId = OpenViBE::CIdentifier::undefined();
|
||||
m_encoderId = m_kernelCtx->getAlgorithmManager().createAlgorithm(OVP_GD_ClassId_Algorithm_StreamedMatrixEncoder);
|
||||
ASSERT_NE(OpenViBE::CIdentifier::undefined(), m_encoderId);
|
||||
}
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
ASSERT_TRUE(m_kernelCtx->getAlgorithmManager().releaseAlgorithm(m_decoderId));
|
||||
m_decoderId = OpenViBE::CIdentifier::undefined();
|
||||
ASSERT_TRUE(m_kernelCtx->getAlgorithmManager().releaseAlgorithm(m_encoderId));
|
||||
m_encoderId = OpenViBE::CIdentifier::undefined();
|
||||
m_kernelCtx.uninitialize();
|
||||
}
|
||||
|
||||
OpenViBE::CIdentifier m_decoderId;
|
||||
OpenViBE::CIdentifier m_encoderId;
|
||||
OpenViBE::Test::ctx m_kernelCtx;
|
||||
};
|
||||
|
||||
TEST_F(StreamedMatrixTest, test_init)
|
||||
{
|
||||
auto& decoder = m_kernelCtx->getAlgorithmManager().getAlgorithm(m_decoderId);
|
||||
auto& encoder = m_kernelCtx->getAlgorithmManager().getAlgorithm(m_encoderId);
|
||||
EXPECT_TRUE(decoder.initialize());
|
||||
EXPECT_TRUE(encoder.initialize());
|
||||
EXPECT_TRUE(decoder.uninitialize());
|
||||
EXPECT_TRUE(encoder.uninitialize());
|
||||
}
|
||||
|
||||
TEST_F(StreamedMatrixTest, matrix_decoder_does_not_crash_when_given_an_empty_matrix)
|
||||
{
|
||||
auto& encoder = m_kernelCtx->getAlgorithmManager().getAlgorithm(m_encoderId);
|
||||
auto& decoder = m_kernelCtx->getAlgorithmManager().getAlgorithm(m_decoderId);
|
||||
EXPECT_TRUE(encoder.initialize());
|
||||
EXPECT_TRUE(decoder.initialize());
|
||||
OpenViBE::CMatrix mat(0);
|
||||
|
||||
OpenViBE::Kernel::TParameterHandler<const OpenViBE::CMatrix*> iMatrix(
|
||||
encoder.getInputParameter(OVP_GD_Algorithm_StreamedMatrixEncoder_InputParameterId_Matrix));
|
||||
OpenViBE::Kernel::TParameterHandler<const OpenViBE::IMemoryBuffer*> oBuffer(
|
||||
encoder.getOutputParameter(OVP_GD_Algorithm_StreamedMatrixEncoder_OutputParameterId_EncodedMemoryBuffer));
|
||||
OpenViBE::Kernel::TParameterHandler<const OpenViBE::IMemoryBuffer*> iBuffer(
|
||||
decoder.getInputParameter(OVP_GD_Algorithm_StreamedMatrixDecoder_InputParameterId_MemoryBufferToDecode));
|
||||
OpenViBE::Kernel::TParameterHandler<const OpenViBE::CMatrix*> oMatrix(
|
||||
decoder.getOutputParameter(OVP_GD_Algorithm_StreamedMatrixDecoder_OutputParameterId_Matrix));
|
||||
|
||||
iMatrix = &mat;
|
||||
iBuffer.setReferenceTarget(oBuffer);
|
||||
|
||||
encoder.process(OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeHeader);
|
||||
decoder.process();
|
||||
|
||||
EXPECT_TRUE(decoder.isOutputTriggerActive(OVP_GD_Algorithm_StreamedMatrixDecoder_OutputTriggerId_ReceivedHeader));
|
||||
|
||||
EXPECT_EQ(mat.getDimensionCount(), oMatrix->getDimensionCount());
|
||||
|
||||
EXPECT_TRUE(encoder.uninitialize());
|
||||
EXPECT_TRUE(decoder.uninitialize());
|
||||
}
|
||||
|
||||
TEST_F(StreamedMatrixTest, matrix_encoded_and_then_decoded_is_identical_to_original)
|
||||
{
|
||||
auto& encoder = m_kernelCtx->getAlgorithmManager().getAlgorithm(m_encoderId);
|
||||
auto& decoder = m_kernelCtx->getAlgorithmManager().getAlgorithm(m_decoderId);
|
||||
EXPECT_TRUE(encoder.initialize());
|
||||
EXPECT_TRUE(decoder.initialize());
|
||||
OpenViBE::CMatrix mat(2, 3);
|
||||
size_t elemCount = 1;
|
||||
for (size_t dim = 0; dim < mat.getDimensionCount(); ++dim)
|
||||
{
|
||||
const auto size = mat.getDimensionSize(dim);
|
||||
for (size_t entry = 0; entry < size; ++entry)
|
||||
{
|
||||
std::string label = std::to_string(dim) + ":" + std::to_string(entry);
|
||||
mat.setDimensionLabel(0, 0, label.c_str());
|
||||
}
|
||||
elemCount *= size;
|
||||
}
|
||||
for (size_t i = 0; i < elemCount; ++i) { mat.getBuffer()[i] = double(i); }
|
||||
|
||||
OpenViBE::Kernel::TParameterHandler<const OpenViBE::CMatrix*> iMatrix(
|
||||
encoder.getInputParameter(OVP_GD_Algorithm_StreamedMatrixEncoder_InputParameterId_Matrix));
|
||||
OpenViBE::Kernel::TParameterHandler<const OpenViBE::IMemoryBuffer*> oBuffer(
|
||||
encoder.getOutputParameter(OVP_GD_Algorithm_StreamedMatrixEncoder_OutputParameterId_EncodedMemoryBuffer));
|
||||
OpenViBE::Kernel::TParameterHandler<const OpenViBE::IMemoryBuffer*> iBuffer(
|
||||
decoder.getInputParameter(OVP_GD_Algorithm_StreamedMatrixDecoder_InputParameterId_MemoryBufferToDecode));
|
||||
OpenViBE::Kernel::TParameterHandler<const OpenViBE::CMatrix*> oMatrix(
|
||||
decoder.getOutputParameter(OVP_GD_Algorithm_StreamedMatrixDecoder_OutputParameterId_Matrix));
|
||||
|
||||
iMatrix = &mat;
|
||||
iBuffer.setReferenceTarget(oBuffer);
|
||||
|
||||
encoder.process(OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeHeader);
|
||||
decoder.process();
|
||||
|
||||
EXPECT_TRUE(decoder.isOutputTriggerActive(OVP_GD_Algorithm_StreamedMatrixDecoder_OutputTriggerId_ReceivedHeader));
|
||||
|
||||
EXPECT_EQ(mat.getDimensionCount(), oMatrix->getDimensionCount());
|
||||
|
||||
EXPECT_TRUE(encoder.uninitialize());
|
||||
EXPECT_TRUE(decoder.uninitialize());
|
||||
}
|
||||
} // namespace
|
||||
|
||||
int uoStreamedMatrixTest(int argc, char* argv[])
|
||||
{
|
||||
if (argc > 1) { kernelConfig = argv[1]; }
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
::testing::GTEST_FLAG(filter) = "StreamedMatrixTest.*";
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
#######################################################################
|
||||
# Software License Agreement (AGPL-3 License)
|
||||
#
|
||||
# OpenViBE SDK Test Software
|
||||
# Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015
|
||||
# Copyright (C) Inria, 2015-2017,V1.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License version 3,
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#######################################################################
|
||||
|
||||
# Base framework features tests
|
||||
PROJECT(openvibe-toolkit-test)
|
||||
|
||||
# ---------------------------------
|
||||
# Target macros
|
||||
# Defines target operating system, architecture and compiler
|
||||
# ---------------------------------
|
||||
SET_BUILD_PLATFORM()
|
||||
|
||||
# ----------------------
|
||||
# Configure test target
|
||||
# ----------------------
|
||||
|
||||
# Test that needs to called with parameters
|
||||
SET(TEST_WITH_PARAM
|
||||
uoMatrixToolkitTest.cpp
|
||||
urImportScenarioFromFileTest.cpp
|
||||
urExportScenarioToFileTest.cpp
|
||||
urValidateScenarioTest.cpp
|
||||
)
|
||||
|
||||
# Test that needs to called without parameters
|
||||
SET(TEST_NO_PARAM
|
||||
)
|
||||
|
||||
# Create test sources list
|
||||
# This macro auto-generate ${PROJECT_NAME}.cpp
|
||||
# in the build tree. ${PROJECT_NAME}.cpp is
|
||||
# the test driver called by ctest to run
|
||||
# the different tests added to this target.
|
||||
CREATE_TEST_SOURCELIST (Tests
|
||||
${PROJECT_NAME}.cpp
|
||||
${TEST_WITH_PARAM}
|
||||
${TEST_NO_PARAM}
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} ${Tests})
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBECommon")
|
||||
INCLUDE("FindOpenViBEToolkit")
|
||||
INCLUDE("FindOpenViBEModuleSystem")
|
||||
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${TESTS_FOLDER})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OVT_UNIT_TOOLKIT_LIB} ${GTEST_BOTH_LIBRARIES} ${OV_LIBS})
|
||||
|
||||
# Add test without parameter to driver
|
||||
FOREACH(test ${TEST_NO_PARAM})
|
||||
GET_FILENAME_COMPONENT(TName ${test} NAME_WE)
|
||||
ADD_TEST(NAME ${TName} COMMAND ${PROJECT_NAME} ${TName})
|
||||
ENDFOREACH()
|
||||
|
||||
# Add test with parameter to driver
|
||||
ADD_TEST(NAME uoMatrixToolkitTest COMMAND ${PROJECT_NAME} uoMatrixToolkitTest "${OVT_TEST_TEMPORARY_DIR}")
|
||||
ADD_TEST(NAME urImportScenarioFromFileTest COMMAND ${PROJECT_NAME} urImportScenarioFromFileTest "${OVT_OPENVIBE_DATA}/kernel/openvibe.conf" "${CMAKE_CURRENT_SOURCE_DIR}/data/")
|
||||
ADD_TEST(NAME urExportScenarioToFileTest COMMAND ${PROJECT_NAME} urExportScenarioToFileTest "${OVT_OPENVIBE_DATA}/kernel/openvibe.conf" "${OVT_TEST_TEMPORARY_DIR}")
|
||||
ADD_TEST(NAME urValidateScenarioTest COMMAND ${PROJECT_NAME} urValidateScenarioTest "${OVT_OPENVIBE_DATA}/kernel/openvibe.conf" "${CMAKE_CURRENT_SOURCE_DIR}/data/")
|
||||
|
||||
Executable
+91
@@ -0,0 +1,91 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+91
@@ -0,0 +1,91 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+89
@@ -0,0 +1,89 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+89
@@ -0,0 +1,89 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+92
@@ -0,0 +1,92 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
<Attributes>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Inputs>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+92
@@ -0,0 +1,92 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Outputs>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+92
@@ -0,0 +1,92 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Settings>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+89
@@ -0,0 +1,89 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+89
@@ -0,0 +1,89 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+94
@@ -0,0 +1,94 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
<Attributes>
|
||||
</Attributes>
|
||||
<Attributes>
|
||||
</Attributes>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+90
@@ -0,0 +1,90 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>Text1</Text>
|
||||
<Text>Text1</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+89
@@ -0,0 +1,89 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Executable
+88
@@ -0,0 +1,88 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<OpenViBE-Scenario>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.0.0</CreatorVersion>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Integer Setting</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Input</Name>
|
||||
<Name>Stimulation Input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation Output</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x4468da36, 0x3fce3251)</Identifier>
|
||||
<Name>Stimulation listener</Name>
|
||||
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 1</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulation stream 2</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
|
||||
<Name>Log level to use</Name>
|
||||
<DefaultValue>Debug</DefaultValue>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>176</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x66b53b19, 0x043b1afe)</Identifier>
|
||||
<Name>Clock stimulator</Name>
|
||||
<AlgorithmClassIdentifier>(0x4f756d3f, 0x29ff0b96)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Generated stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x1dd7b2d2, 0x3c1d084d)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x66b53b19, 0x043b1afe)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4468da36, 0x3fce3251)</BoxIdentifier>
|
||||
<BoxInputIndex>1</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x160bd469, 0x62a644ce)</Identifier>
|
||||
<Text>This comment contains a newline
|
||||
and unicode characters 日本語</Text>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
|
||||
<Value>ADDED SOFTWARE VERSION</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user