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), double(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