summaryrefslogtreecommitdiffstats
path: root/src/arrow/matlab/test/tfeathermex.m
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/arrow/matlab/test/tfeathermex.m
parentInitial commit. (diff)
downloadceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz
ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/arrow/matlab/test/tfeathermex.m')
-rw-r--r--src/arrow/matlab/test/tfeathermex.m76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/arrow/matlab/test/tfeathermex.m b/src/arrow/matlab/test/tfeathermex.m
new file mode 100644
index 000000000..77070ad14
--- /dev/null
+++ b/src/arrow/matlab/test/tfeathermex.m
@@ -0,0 +1,76 @@
+classdef tfeathermex < matlab.unittest.TestCase
+ % Tests for MATLAB featherreadmex and featherwritemex.
+
+ % Licensed to the Apache Software Foundation (ASF) under one or more
+ % contributor license agreements. See the NOTICE file distributed with
+ % this work for additional information regarding copyright ownership.
+ % The ASF licenses this file to you under the Apache License, Version
+ % 2.0 (the "License"); you may not use this file except in compliance
+ % with the License. You may obtain a copy of the License at
+ %
+ % http://www.apache.org/licenses/LICENSE-2.0
+ %
+ % Unless required by applicable law or agreed to in writing, software
+ % distributed under the License is distributed on an "AS IS" BASIS,
+ % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ % implied. See the License for the specific language governing
+ % permissions and limitations under the License.
+
+ methods(TestClassSetup)
+
+ function addFeatherFunctionsToMATLABPath(testCase)
+ import matlab.unittest.fixtures.PathFixture
+ % Add Feather test utilities to the MATLAB path.
+ testCase.applyFixture(PathFixture('util'));
+ % Add featherread and featherwrite to the MATLAB path.
+ testCase.applyFixture(PathFixture(fullfile('..', 'src')));
+ % featherreadmex must be on the MATLAB path.
+ testCase.assertTrue(~isempty(which('featherreadmex')), ...
+ '''featherreadmex'' must be on the MATLAB path. Use ''addpath'' to add folders to the MATLAB path.');
+ % featherwritemex must be on the MATLAB path.
+ testCase.assertTrue(~isempty(which('featherwritemex')), ...
+ '''featherwritemex'' must be on to the MATLAB path. Use ''addpath'' to add folders to the MATLAB path.');
+ end
+
+ end
+
+ methods(TestMethodSetup)
+
+ function setupTempWorkingDirectory(testCase)
+ import matlab.unittest.fixtures.WorkingFolderFixture;
+ testCase.applyFixture(WorkingFolderFixture);
+ end
+
+ end
+
+ methods(Test)
+
+ function NumericDatatypesNulls(testCase)
+ filename = fullfile(pwd, 'temp.feather');
+
+ [expectedVariables, expectedMetadata] = createVariablesAndMetadataStructs();
+ [actualVariables, ~] = featherMEXRoundTrip(filename, expectedVariables, expectedMetadata);
+ testCase.verifyEqual([actualVariables.Valid], [expectedVariables.Valid]);
+ end
+
+ function InvalidMATLABTableVariableNames(testCase)
+ filename = fullfile(pwd, 'temp.feather');
+
+ % Create a table with an invalid MATLAB table variable name.
+ invalidVariable = mlarrow.util.createVariableStruct('double', 1, true, '@');
+ validVariable = mlarrow.util.createVariableStruct('double', 1, true, 'Valid');
+ variables = [invalidVariable, validVariable];
+ metadata = mlarrow.util.createMetadataStruct(1, 2);
+ featherwritemex(filename, variables, metadata);
+ t = featherread(filename);
+
+ testCase.verifyEqual(t.Properties.VariableNames{1}, 'x_');
+ testCase.verifyEqual(t.Properties.VariableNames{2}, 'Valid');
+
+ testCase.verifyEqual(t.Properties.VariableDescriptions{1}, 'Original variable name: ''@''');
+ testCase.verifyEqual(t.Properties.VariableDescriptions{2}, '');
+ end
+
+ end
+
+end