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