matlab(tdcs): data loading + curated group map
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
classdef tLoadData < matlab.unittest.TestCase
|
||||
%TLOADDATA Tests for tdcs_load_data / tdcs_config (Task 1).
|
||||
%
|
||||
% Authored per TDD: written before tdcs_load_data.m existed, so it is
|
||||
% expected to fail until the loader is implemented. As of this
|
||||
% commit MATLAB is not licensed in this environment, so this suite
|
||||
% has been authored and reviewed by hand but has NOT been executed.
|
||||
% Expected values (row count, group counts, load-check cells) were
|
||||
% independently verified against analysis/matlab/raw/*.csv by a
|
||||
% throwaway Python script (see task-1-report.md), not by running
|
||||
% this test.
|
||||
|
||||
properties (Constant)
|
||||
% Non-blank (subject, day) success cells for the 12 curated
|
||||
% animals with day >= 0, counted directly from raw_success.csv.
|
||||
ExpectedRowCount = 185
|
||||
end
|
||||
|
||||
methods (Test)
|
||||
function testTwelveCuratedSubjects(testCase)
|
||||
T = tdcs_load_data();
|
||||
testCase.verifyEqual(numel(unique(T.subject)), 12);
|
||||
end
|
||||
|
||||
function testRowCountMatchesNonBlankDayGeq0Cells(testCase)
|
||||
T = tdcs_load_data();
|
||||
testCase.verifyEqual(height(T), tLoadData.ExpectedRowCount);
|
||||
end
|
||||
|
||||
function testGroupSubjectCounts(testCase)
|
||||
T = tdcs_load_data();
|
||||
subjGroup = unique(T(:, {'subject', 'group'}));
|
||||
counts = countcats(subjGroup.group);
|
||||
catNames = categories(subjGroup.group);
|
||||
|
||||
expected = containers.Map( ...
|
||||
{'Naive', 'Electrode-Box-A2', 'Electrode-Box-B2', ...
|
||||
'Electrode-Box-A', 'Right-Electrode'}, ...
|
||||
{4, 3, 3, 1, 1});
|
||||
|
||||
testCase.verifyEqual(numel(catNames), expected.Count);
|
||||
for i = 1:numel(catNames)
|
||||
name = catNames{i};
|
||||
testCase.verifyTrue(isKey(expected, name), ...
|
||||
sprintf('Unexpected group "%s" in loaded data.', name));
|
||||
testCase.verifyEqual(counts(i), expected(name), ...
|
||||
sprintf('Subject count mismatch for group "%s".', name));
|
||||
end
|
||||
end
|
||||
|
||||
function testVuVuongDayZeroLoadCheck(testCase)
|
||||
T = tdcs_load_data();
|
||||
row = T(T.subject == "Vu-vuong" & T.day == 0, {'success', 'total'});
|
||||
testCase.verifyEqual(height(row), 1);
|
||||
testCase.verifyEqual(row.success(1), 18);
|
||||
testCase.verifyEqual(row.total(1), 61);
|
||||
end
|
||||
|
||||
function testBanhMi1DayZeroLoadCheck(testCase)
|
||||
T = tdcs_load_data();
|
||||
row = T(T.subject == "Banh-mi-1" & T.day == 0, {'success', 'total'});
|
||||
testCase.verifyEqual(height(row), 1);
|
||||
testCase.verifyEqual(row.success(1), 13);
|
||||
testCase.verifyEqual(row.total(1), 84);
|
||||
end
|
||||
|
||||
function testNoNegativeDayRows(testCase)
|
||||
T = tdcs_load_data();
|
||||
testCase.verifyTrue(all(T.day >= 0));
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user