"Some data columns don't match either variable_names or old_variable_names in dpdict"
"validate_dat_dpdict_alignment provides detailed error messages"
"DIMENSION_MISMATCH.*Expected: dpdict should have one row per dat column \\(3 rows\\).*Actual: dpdict has 2 rows"
"MISSING_REQUIRED_COLUMNS.*Expected: dpdict must contain columns: variable_names, variable_labels.*Missing columns: variable_names, variable_labels"
"VARIABLE_NAMES_MISMATCH.*Variables in dat but not in dpdict\\$variable_names.*\\[1\\] 'a'.*\\[3\\] 'c'.*Variables in dpdict\\$variable_names but not in dat.*\\[1\\] 'x'.*\\[3\\] 'z'"
"VARIABLE_NAMES_MISMATCH.*Variables found in dpdict\\$old_variable_names.*'a' -> should be 'new_a' \\(dpdict row 1\\).*Consider running update_dat_from_dpdict\\(\\) first"
"VARIABLE_LABELS_MISMATCH.*Labels in dat but not in dpdict\\$variable_labels.*'Label A'.*'Label C'"
"validate_no_dpdict_duplicates provides detailed error messages"
"DUPLICATE_VARIABLE_NAMES.*Variable name: 'q1'.*Appears at dpdict rows: 1, 3.*Associated labels:.*\\[1\\]: 'Question 1'.*\\[3\\]: 'Question 1 Again'.*Variable name: 'q2'.*Appears at dpdict rows: 2, 5"
"DUPLICATE_VARIABLE_LABELS.*Variable label: 'Same Label'.*Appears at dpdict rows: 1, 3.*Associated variable names:.*\\[1\\]: 'q1'.*\\[3\\]: 'q3'"
"DUPLICATE_ALIAS_WITH_SUFFIX.*Alias with suffix: 'scale_1'.*Appears at dpdict rows: 1, 3.*Associated variables:.*\\[1\\]: 'sc1_1' \\('Scale 1 Item 1'\\).*\\[3\\]: 'sc2_1' \\('Scale 2 Item 1'\\)"
# NAs should not be considered duplicates
"validate_variable_names provides detailed error explanations"
"Variable name validation failed.*\\[1\\] '1q'.*starts with number \\(must start with letter\\).*\\[2\\] '2var'.*starts with number \\(must start with letter\\)"
"contains invalid character\\(s\\): '\\.'.*contains invalid character\\(s\\): '-'.*contains invalid character\\(s\\): '@'"
"\\[1\\] '_var'.*starts with underscore \\(must start with letter\\).*\\[2\\] '\\.name'.*starts with special character \\(must start with letter\\).*\\[3\\] '#question'.*starts with special character \\(must start with letter\\)"
"\\[1\\] 'q_a'.*underscore not followed by number.*\\[2\\] 'var_'.*ends with underscore.*\\[3\\] 'q__1'.*contains consecutive underscores.*\\[4\\] 'sc_x2'.*underscore not followed by number"
"\\[1\\] '1q\\.a_b'.*starts with number.*contains invalid character\\(s\\): '\\.'.*underscore not followed by number"
"validation functions provide same detailed messages for warnings"
"validation functions return TRUE for valid inputs"
"validation functions handle edge cases appropriately"
# Should not error for empty but aligned data
"temp_dat must be a dataframe with more than zero columns"
"Q1_1: Select all that apply - Statement 1"
"Q1_2: Select all that apply - Statement 2"
"Q1_3: Select all that apply - Statement 3"
"Q1_4: Select all that apply - Statement 4"
"Q2_1: Multi variable question - Statement 1"
"Q2_2: Multi variable question - Statement 2"
# Q2 variables should be in the same group
"Q1: Main question text - Statement 1 - Sub statement A"
"Main question text - Statement 1 - Sub statement A"
"get_updated_seps correctly handles separator position indexing"
"Q1_4: Select all that apply - Statement 5"
"Q2_1: Select all that apply - Statement 1"
"Q1_4: Click one of these - Statement 4"
"Q1_1: Select all that apply Statement 1"
"Q1_2: Select all that apply Statement 2"
"Q1_3: Select all that apply Statement 3"
"dpdict must include columns 'question_group'"
"dpdict must at a minimum have a question group variable"
"`count_before_repeat` is greater than the number of variables"
"Both 'dat' and 'dpdict' must be data frames"
"Test data doesn't have required columns"
"mutate preserves value labels from spliced variables"
"mutate updates dpdict when transforming existing labeled variables"
# Simple assignment should preserve labels
"left_join works for survey_data objects"

get_updated_seps correctly handles separator position indexing