Lines Matching full:test
8 #include <kunit/test.h>
65 /* Test hfsplus_strcasecmp function */
66 static void hfsplus_strcasecmp_test(struct kunit *test) in hfsplus_strcasecmp_test() argument
71 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_strcasecmp_test()
73 /* Test identical strings */ in hfsplus_strcasecmp_test()
76 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
79 /* Test case insensitive comparison */ in hfsplus_strcasecmp_test()
82 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
87 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
90 /* Test different strings */ in hfsplus_strcasecmp_test()
93 KUNIT_EXPECT_LT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
98 KUNIT_EXPECT_GT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
101 /* Test different lengths */ in hfsplus_strcasecmp_test()
102 create_unistr(&mock_env->str1, "test"); in hfsplus_strcasecmp_test()
104 KUNIT_EXPECT_LT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
108 create_unistr(&mock_env->str2, "test"); in hfsplus_strcasecmp_test()
109 KUNIT_EXPECT_GT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
112 /* Test empty strings */ in hfsplus_strcasecmp_test()
115 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
119 create_unistr(&mock_env->str2, "test"); in hfsplus_strcasecmp_test()
120 KUNIT_EXPECT_LT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
123 /* Test single characters */ in hfsplus_strcasecmp_test()
126 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
131 KUNIT_EXPECT_LT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
134 /* Test maximum length strings */ in hfsplus_strcasecmp_test()
139 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
145 KUNIT_EXPECT_LT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
148 /* Test corrupted strings */ in hfsplus_strcasecmp_test()
152 KUNIT_EXPECT_NE(test, 0, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
158 KUNIT_EXPECT_NE(test, 0, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
161 create_unistr(&mock_env->str1, "test"); in hfsplus_strcasecmp_test()
164 KUNIT_EXPECT_GT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
167 create_unistr(&mock_env->str1, "test"); in hfsplus_strcasecmp_test()
170 KUNIT_EXPECT_LT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
175 create_unistr(&mock_env->str2, "test"); in hfsplus_strcasecmp_test()
176 KUNIT_EXPECT_GT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
180 create_unistr(&mock_env->str2, "test"); in hfsplus_strcasecmp_test()
182 KUNIT_EXPECT_LT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_strcasecmp_test()
188 /* Test hfsplus_strcmp function (case-sensitive) */
189 static void hfsplus_strcmp_test(struct kunit *test) in hfsplus_strcmp_test() argument
194 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_strcmp_test()
196 /* Test identical strings */ in hfsplus_strcmp_test()
199 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
202 /* Test case sensitive comparison - should NOT be equal */ in hfsplus_strcmp_test()
205 KUNIT_EXPECT_NE(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
208 KUNIT_EXPECT_LT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
211 /* Test lexicographic ordering */ in hfsplus_strcmp_test()
214 KUNIT_EXPECT_LT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
219 KUNIT_EXPECT_GT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
222 /* Test different lengths with common prefix */ in hfsplus_strcmp_test()
223 create_unistr(&mock_env->str1, "test"); in hfsplus_strcmp_test()
225 KUNIT_EXPECT_LT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
229 create_unistr(&mock_env->str2, "test"); in hfsplus_strcmp_test()
230 KUNIT_EXPECT_GT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
233 /* Test empty strings */ in hfsplus_strcmp_test()
236 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
239 /* Test maximum length strings */ in hfsplus_strcmp_test()
244 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
250 KUNIT_EXPECT_LT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
253 /* Test corrupted strings */ in hfsplus_strcmp_test()
257 KUNIT_EXPECT_NE(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
263 KUNIT_EXPECT_NE(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
266 create_unistr(&mock_env->str1, "test"); in hfsplus_strcmp_test()
269 KUNIT_EXPECT_LT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
272 create_unistr(&mock_env->str1, "test"); in hfsplus_strcmp_test()
275 KUNIT_EXPECT_LT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
280 create_unistr(&mock_env->str2, "test"); in hfsplus_strcmp_test()
281 KUNIT_EXPECT_GT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
285 create_unistr(&mock_env->str2, "test"); in hfsplus_strcmp_test()
287 KUNIT_EXPECT_GT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_strcmp_test()
293 /* Test Unicode edge cases */
294 static void hfsplus_unicode_edge_cases_test(struct kunit *test) in hfsplus_unicode_edge_cases_test() argument
299 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_unicode_edge_cases_test()
301 /* Test with special characters */ in hfsplus_unicode_edge_cases_test()
312 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_unicode_edge_cases_test()
314 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_unicode_edge_cases_test()
317 /* Test with different special characters */ in hfsplus_unicode_edge_cases_test()
319 KUNIT_EXPECT_NE(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_unicode_edge_cases_test()
322 /* Test null characters within string (should be handled correctly) */ in hfsplus_unicode_edge_cases_test()
333 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_unicode_edge_cases_test()
339 /* Test boundary conditions */
340 static void hfsplus_unicode_boundary_test(struct kunit *test) in hfsplus_unicode_boundary_test() argument
346 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_unicode_boundary_test()
348 /* Test maximum length boundary */ in hfsplus_unicode_boundary_test()
357 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_unicode_boundary_test()
362 KUNIT_EXPECT_LT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_unicode_boundary_test()
365 /* Test zero length strings */ in hfsplus_unicode_boundary_test()
368 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcmp(&mock_env->str1, in hfsplus_unicode_boundary_test()
370 KUNIT_EXPECT_EQ(test, 0, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_unicode_boundary_test()
373 /* Test one character vs empty */ in hfsplus_unicode_boundary_test()
377 KUNIT_EXPECT_GT(test, hfsplus_strcmp(&mock_env->str1, in hfsplus_unicode_boundary_test()
379 KUNIT_EXPECT_GT(test, hfsplus_strcasecmp(&mock_env->str1, in hfsplus_unicode_boundary_test()
433 /* Test hfsplus_uni2asc basic functionality */
434 static void hfsplus_uni2asc_basic_test(struct kunit *test) in hfsplus_uni2asc_basic_test() argument
441 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_uni2asc_basic_test()
444 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_uni2asc_basic_test()
448 /* Test simple ASCII string conversion */ in hfsplus_uni2asc_basic_test()
454 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_uni2asc_basic_test()
455 KUNIT_EXPECT_EQ(test, 5, len); in hfsplus_uni2asc_basic_test()
456 KUNIT_EXPECT_STREQ(test, "hello", mock_env->buf); in hfsplus_uni2asc_basic_test()
458 /* Test empty string */ in hfsplus_uni2asc_basic_test()
464 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_uni2asc_basic_test()
465 KUNIT_EXPECT_EQ(test, 0, len); in hfsplus_uni2asc_basic_test()
467 /* Test single character */ in hfsplus_uni2asc_basic_test()
473 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_uni2asc_basic_test()
474 KUNIT_EXPECT_EQ(test, 1, len); in hfsplus_uni2asc_basic_test()
475 KUNIT_EXPECT_EQ(test, 'A', mock_env->buf[0]); in hfsplus_uni2asc_basic_test()
481 /* Test special character handling */
482 static void hfsplus_uni2asc_special_chars_test(struct kunit *test) in hfsplus_uni2asc_special_chars_test() argument
489 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_uni2asc_special_chars_test()
492 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_uni2asc_special_chars_test()
496 /* Test null character conversion (should become 0x2400) */ in hfsplus_uni2asc_special_chars_test()
503 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_uni2asc_special_chars_test()
504 KUNIT_EXPECT_EQ(test, 1, len); in hfsplus_uni2asc_special_chars_test()
505 /* Our test implementation returns '?' for non-ASCII */ in hfsplus_uni2asc_special_chars_test()
506 KUNIT_EXPECT_EQ(test, '?', mock_env->buf[0]); in hfsplus_uni2asc_special_chars_test()
508 /* Test forward slash conversion (should become colon) */ in hfsplus_uni2asc_special_chars_test()
515 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_uni2asc_special_chars_test()
516 KUNIT_EXPECT_EQ(test, 1, len); in hfsplus_uni2asc_special_chars_test()
517 KUNIT_EXPECT_EQ(test, ':', mock_env->buf[0]); in hfsplus_uni2asc_special_chars_test()
519 /* Test string with mixed special characters */ in hfsplus_uni2asc_special_chars_test()
528 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_uni2asc_special_chars_test()
529 KUNIT_EXPECT_EQ(test, 3, len); in hfsplus_uni2asc_special_chars_test()
530 KUNIT_EXPECT_EQ(test, 'a', mock_env->buf[0]); in hfsplus_uni2asc_special_chars_test()
531 KUNIT_EXPECT_EQ(test, ':', mock_env->buf[1]); in hfsplus_uni2asc_special_chars_test()
532 KUNIT_EXPECT_EQ(test, 'b', mock_env->buf[2]); in hfsplus_uni2asc_special_chars_test()
538 /* Test buffer length handling */
539 static void hfsplus_uni2asc_buffer_test(struct kunit *test) in hfsplus_uni2asc_buffer_test() argument
546 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_uni2asc_buffer_test()
549 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_uni2asc_buffer_test()
553 /* Test insufficient buffer space */ in hfsplus_uni2asc_buffer_test()
559 KUNIT_EXPECT_EQ(test, -ENAMETOOLONG, result); in hfsplus_uni2asc_buffer_test()
560 KUNIT_EXPECT_EQ(test, 5, len); /* Should be set to consumed length */ in hfsplus_uni2asc_buffer_test()
562 /* Test exact buffer size */ in hfsplus_uni2asc_buffer_test()
568 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_uni2asc_buffer_test()
569 KUNIT_EXPECT_EQ(test, 5, len); in hfsplus_uni2asc_buffer_test()
571 /* Test zero length buffer */ in hfsplus_uni2asc_buffer_test()
572 create_unistr(&mock_env->str1, "test"); in hfsplus_uni2asc_buffer_test()
577 KUNIT_EXPECT_EQ(test, -ENAMETOOLONG, result); in hfsplus_uni2asc_buffer_test()
578 KUNIT_EXPECT_EQ(test, 0, len); in hfsplus_uni2asc_buffer_test()
584 /* Test corrupted unicode string handling */
585 static void hfsplus_uni2asc_corrupted_test(struct kunit *test) in hfsplus_uni2asc_corrupted_test() argument
592 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_uni2asc_corrupted_test()
595 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_uni2asc_corrupted_test()
599 /* Test corrupted length (too large) */ in hfsplus_uni2asc_corrupted_test()
600 create_unistr(&mock_env->str1, "test"); in hfsplus_uni2asc_corrupted_test()
608 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_uni2asc_corrupted_test()
613 KUNIT_EXPECT_GT(test, len, 0); in hfsplus_uni2asc_corrupted_test()
619 /* Test edge cases and boundary conditions */
620 static void hfsplus_uni2asc_edge_cases_test(struct kunit *test) in hfsplus_uni2asc_edge_cases_test() argument
628 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_uni2asc_edge_cases_test()
631 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_uni2asc_edge_cases_test()
635 /* Test maximum length string */ in hfsplus_uni2asc_edge_cases_test()
644 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_uni2asc_edge_cases_test()
645 KUNIT_EXPECT_EQ(test, HFSPLUS_MAX_STRLEN, len); in hfsplus_uni2asc_edge_cases_test()
649 KUNIT_EXPECT_EQ(test, 'a', mock_env->buf[i]); in hfsplus_uni2asc_edge_cases_test()
651 /* Test string with high Unicode values (non-ASCII) */ in hfsplus_uni2asc_edge_cases_test()
660 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_uni2asc_edge_cases_test()
661 KUNIT_EXPECT_EQ(test, 3, len); in hfsplus_uni2asc_edge_cases_test()
662 /* Our test implementation converts non-ASCII to '?' */ in hfsplus_uni2asc_edge_cases_test()
663 KUNIT_EXPECT_EQ(test, '?', mock_env->buf[0]); in hfsplus_uni2asc_edge_cases_test()
664 KUNIT_EXPECT_EQ(test, '?', mock_env->buf[1]); in hfsplus_uni2asc_edge_cases_test()
665 KUNIT_EXPECT_EQ(test, '?', mock_env->buf[2]); in hfsplus_uni2asc_edge_cases_test()
683 static void check_unistr_content(struct kunit *test, in check_unistr_content() argument
691 KUNIT_EXPECT_EQ(test, expected_len, actual_len); in check_unistr_content()
697 KUNIT_EXPECT_EQ(test, expected_char, actual_char); in check_unistr_content()
701 /* Test hfsplus_asc2uni basic functionality */
702 static void hfsplus_asc2uni_basic_test(struct kunit *test) in hfsplus_asc2uni_basic_test() argument
709 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_asc2uni_basic_test()
712 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_asc2uni_basic_test()
716 /* Test simple ASCII string conversion */ in hfsplus_asc2uni_basic_test()
720 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_basic_test()
721 check_unistr_content(test, &mock_env->str1, "hello"); in hfsplus_asc2uni_basic_test()
723 /* Test empty string */ in hfsplus_asc2uni_basic_test()
727 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_basic_test()
728 KUNIT_EXPECT_EQ(test, 0, be16_to_cpu(mock_env->str1.length)); in hfsplus_asc2uni_basic_test()
730 /* Test single character */ in hfsplus_asc2uni_basic_test()
734 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_basic_test()
735 check_unistr_content(test, &mock_env->str1, "A"); in hfsplus_asc2uni_basic_test()
737 /* Test null-terminated string with explicit length */ in hfsplus_asc2uni_basic_test()
739 HFSPLUS_MAX_STRLEN, "test\0extra", 4); in hfsplus_asc2uni_basic_test()
741 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_basic_test()
742 check_unistr_content(test, &mock_env->str1, "test"); in hfsplus_asc2uni_basic_test()
748 /* Test special character handling in asc2uni */
749 static void hfsplus_asc2uni_special_chars_test(struct kunit *test) in hfsplus_asc2uni_special_chars_test() argument
756 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_asc2uni_special_chars_test()
759 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_asc2uni_special_chars_test()
763 /* Test colon conversion (should become forward slash) */ in hfsplus_asc2uni_special_chars_test()
767 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_special_chars_test()
768 KUNIT_EXPECT_EQ(test, 1, be16_to_cpu(mock_env->str1.length)); in hfsplus_asc2uni_special_chars_test()
769 KUNIT_EXPECT_EQ(test, '/', be16_to_cpu(mock_env->str1.unicode[0])); in hfsplus_asc2uni_special_chars_test()
771 /* Test string with mixed special characters */ in hfsplus_asc2uni_special_chars_test()
775 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_special_chars_test()
776 KUNIT_EXPECT_EQ(test, 3, be16_to_cpu(mock_env->str1.length)); in hfsplus_asc2uni_special_chars_test()
777 KUNIT_EXPECT_EQ(test, 'a', be16_to_cpu(mock_env->str1.unicode[0])); in hfsplus_asc2uni_special_chars_test()
778 KUNIT_EXPECT_EQ(test, '/', be16_to_cpu(mock_env->str1.unicode[1])); in hfsplus_asc2uni_special_chars_test()
779 KUNIT_EXPECT_EQ(test, 'b', be16_to_cpu(mock_env->str1.unicode[2])); in hfsplus_asc2uni_special_chars_test()
781 /* Test multiple special characters */ in hfsplus_asc2uni_special_chars_test()
785 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_special_chars_test()
786 KUNIT_EXPECT_EQ(test, 3, be16_to_cpu(mock_env->str1.length)); in hfsplus_asc2uni_special_chars_test()
787 KUNIT_EXPECT_EQ(test, '/', be16_to_cpu(mock_env->str1.unicode[0])); in hfsplus_asc2uni_special_chars_test()
788 KUNIT_EXPECT_EQ(test, '/', be16_to_cpu(mock_env->str1.unicode[1])); in hfsplus_asc2uni_special_chars_test()
789 KUNIT_EXPECT_EQ(test, '/', be16_to_cpu(mock_env->str1.unicode[2])); in hfsplus_asc2uni_special_chars_test()
795 /* Test buffer length limits */
796 static void hfsplus_asc2uni_buffer_limits_test(struct kunit *test) in hfsplus_asc2uni_buffer_limits_test() argument
803 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_asc2uni_buffer_limits_test()
806 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_asc2uni_buffer_limits_test()
810 /* Test exact maximum length */ in hfsplus_asc2uni_buffer_limits_test()
816 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_buffer_limits_test()
817 KUNIT_EXPECT_EQ(test, HFSPLUS_MAX_STRLEN, in hfsplus_asc2uni_buffer_limits_test()
820 /* Test exceeding maximum length */ in hfsplus_asc2uni_buffer_limits_test()
826 KUNIT_EXPECT_EQ(test, -ENAMETOOLONG, result); in hfsplus_asc2uni_buffer_limits_test()
827 KUNIT_EXPECT_EQ(test, HFSPLUS_MAX_STRLEN, in hfsplus_asc2uni_buffer_limits_test()
830 /* Test with smaller max_unistr_len */ in hfsplus_asc2uni_buffer_limits_test()
834 KUNIT_EXPECT_EQ(test, -ENAMETOOLONG, result); in hfsplus_asc2uni_buffer_limits_test()
835 KUNIT_EXPECT_EQ(test, 5, be16_to_cpu(mock_env->str1.length)); in hfsplus_asc2uni_buffer_limits_test()
837 /* Test zero max length */ in hfsplus_asc2uni_buffer_limits_test()
838 result = hfsplus_asc2uni(&mock_sb->sb, &mock_env->str1, 0, "test", 4); in hfsplus_asc2uni_buffer_limits_test()
840 KUNIT_EXPECT_EQ(test, -ENAMETOOLONG, result); in hfsplus_asc2uni_buffer_limits_test()
841 KUNIT_EXPECT_EQ(test, 0, be16_to_cpu(mock_env->str1.length)); in hfsplus_asc2uni_buffer_limits_test()
847 /* Test error handling and edge cases */
848 static void hfsplus_asc2uni_edge_cases_test(struct kunit *test) in hfsplus_asc2uni_edge_cases_test() argument
856 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_asc2uni_edge_cases_test()
860 /* Test zero length input */ in hfsplus_asc2uni_edge_cases_test()
862 &ustr, HFSPLUS_MAX_STRLEN, "test", 0); in hfsplus_asc2uni_edge_cases_test()
864 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_edge_cases_test()
865 KUNIT_EXPECT_EQ(test, 0, be16_to_cpu(ustr.length)); in hfsplus_asc2uni_edge_cases_test()
867 /* Test input with length mismatch */ in hfsplus_asc2uni_edge_cases_test()
871 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_edge_cases_test()
872 check_unistr_content(test, &ustr, "hel"); in hfsplus_asc2uni_edge_cases_test()
874 /* Test with various printable ASCII characters */ in hfsplus_asc2uni_edge_cases_test()
878 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_edge_cases_test()
879 check_unistr_content(test, &ustr, "ABC123!@#"); in hfsplus_asc2uni_edge_cases_test()
881 /* Test null character in the middle */ in hfsplus_asc2uni_edge_cases_test()
885 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_edge_cases_test()
886 KUNIT_EXPECT_EQ(test, 3, be16_to_cpu(ustr.length)); in hfsplus_asc2uni_edge_cases_test()
887 KUNIT_EXPECT_EQ(test, 'a', be16_to_cpu(ustr.unicode[0])); in hfsplus_asc2uni_edge_cases_test()
888 KUNIT_EXPECT_EQ(test, 0, be16_to_cpu(ustr.unicode[1])); in hfsplus_asc2uni_edge_cases_test()
889 KUNIT_EXPECT_EQ(test, 'b', be16_to_cpu(ustr.unicode[2])); in hfsplus_asc2uni_edge_cases_test()
894 /* Test decomposition flag behavior */
895 static void hfsplus_asc2uni_decompose_test(struct kunit *test) in hfsplus_asc2uni_decompose_test() argument
902 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_asc2uni_decompose_test()
905 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_asc2uni_decompose_test()
909 /* Test with decomposition disabled (default) */ in hfsplus_asc2uni_decompose_test()
912 HFSPLUS_MAX_STRLEN, "test", 4); in hfsplus_asc2uni_decompose_test()
914 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_decompose_test()
915 check_unistr_content(test, &mock_env->str1, "test"); in hfsplus_asc2uni_decompose_test()
917 /* Test with decomposition enabled */ in hfsplus_asc2uni_decompose_test()
920 HFSPLUS_MAX_STRLEN, "test", 4); in hfsplus_asc2uni_decompose_test()
922 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_asc2uni_decompose_test()
923 check_unistr_content(test, &mock_env->str2, "test"); in hfsplus_asc2uni_decompose_test()
926 KUNIT_EXPECT_EQ(test, in hfsplus_asc2uni_decompose_test()
951 /* Test hfsplus_hash_dentry basic functionality */
952 static void hfsplus_hash_dentry_basic_test(struct kunit *test) in hfsplus_hash_dentry_basic_test() argument
959 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_hash_dentry_basic_test()
964 /* Test basic string hashing */ in hfsplus_hash_dentry_basic_test()
968 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_basic_test()
969 KUNIT_EXPECT_NE(test, 0, str1.hash); in hfsplus_hash_dentry_basic_test()
971 /* Test that identical strings produce identical hashes */ in hfsplus_hash_dentry_basic_test()
975 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_basic_test()
976 KUNIT_EXPECT_EQ(test, str1.hash, str2.hash); in hfsplus_hash_dentry_basic_test()
978 /* Test empty string */ in hfsplus_hash_dentry_basic_test()
983 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_basic_test()
985 /* Test single character */ in hfsplus_hash_dentry_basic_test()
989 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_basic_test()
990 KUNIT_EXPECT_NE(test, 0, str1.hash); in hfsplus_hash_dentry_basic_test()
995 /* Test case folding behavior in hash */
996 static void hfsplus_hash_dentry_casefold_test(struct kunit *test) in hfsplus_hash_dentry_casefold_test() argument
1003 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_hash_dentry_casefold_test()
1008 /* Test with case folding disabled (default) */ in hfsplus_hash_dentry_casefold_test()
1013 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_casefold_test()
1017 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_casefold_test()
1023 KUNIT_EXPECT_NE(test, str1.hash, str2.hash); in hfsplus_hash_dentry_casefold_test()
1025 /* Test with case folding enabled */ in hfsplus_hash_dentry_casefold_test()
1030 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_casefold_test()
1034 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_casefold_test()
1037 KUNIT_EXPECT_EQ(test, str1.hash, str2.hash); in hfsplus_hash_dentry_casefold_test()
1039 /* Test mixed case */ in hfsplus_hash_dentry_casefold_test()
1042 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_casefold_test()
1043 KUNIT_EXPECT_EQ(test, str1.hash, str2.hash); in hfsplus_hash_dentry_casefold_test()
1048 /* Test special character handling in hash */
1049 static void hfsplus_hash_dentry_special_chars_test(struct kunit *test) in hfsplus_hash_dentry_special_chars_test() argument
1056 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_hash_dentry_special_chars_test()
1061 /* Test colon conversion (: becomes /) */ in hfsplus_hash_dentry_special_chars_test()
1064 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_special_chars_test()
1068 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_special_chars_test()
1071 KUNIT_EXPECT_EQ(test, str1.hash, str2.hash); in hfsplus_hash_dentry_special_chars_test()
1073 /* Test multiple special characters */ in hfsplus_hash_dentry_special_chars_test()
1076 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_special_chars_test()
1080 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_special_chars_test()
1082 KUNIT_EXPECT_EQ(test, str1.hash, str2.hash); in hfsplus_hash_dentry_special_chars_test()
1087 /* Test decomposition flag behavior in hash */
1088 static void hfsplus_hash_dentry_decompose_test(struct kunit *test) in hfsplus_hash_dentry_decompose_test() argument
1095 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_hash_dentry_decompose_test()
1100 /* Test with decomposition disabled (default) */ in hfsplus_hash_dentry_decompose_test()
1103 create_qstr(&str1, "test"); in hfsplus_hash_dentry_decompose_test()
1105 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_decompose_test()
1107 /* Test with decomposition enabled */ in hfsplus_hash_dentry_decompose_test()
1110 create_qstr(&str2, "test"); in hfsplus_hash_dentry_decompose_test()
1112 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_decompose_test()
1118 KUNIT_EXPECT_NE(test, 0, str2.hash); in hfsplus_hash_dentry_decompose_test()
1123 /* Test hash consistency and distribution */
1124 static void hfsplus_hash_dentry_consistency_test(struct kunit *test) in hfsplus_hash_dentry_consistency_test() argument
1132 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_hash_dentry_consistency_test()
1137 /* Test that same string always produces same hash */ in hfsplus_hash_dentry_consistency_test()
1140 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_consistency_test()
1145 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_consistency_test()
1147 KUNIT_EXPECT_EQ(test, hash1, str2.hash); in hfsplus_hash_dentry_consistency_test()
1149 /* Test that different strings produce different hashes */ in hfsplus_hash_dentry_consistency_test()
1152 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_consistency_test()
1154 KUNIT_EXPECT_NE(test, str1.hash, str3.hash); in hfsplus_hash_dentry_consistency_test()
1156 /* Test similar strings should have different hashes */ in hfsplus_hash_dentry_consistency_test()
1159 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_consistency_test()
1163 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_consistency_test()
1165 KUNIT_EXPECT_NE(test, str1.hash, str2.hash); in hfsplus_hash_dentry_consistency_test()
1170 /* Test edge cases and boundary conditions */
1171 static void hfsplus_hash_dentry_edge_cases_test(struct kunit *test) in hfsplus_hash_dentry_edge_cases_test() argument
1179 KUNIT_ASSERT_NOT_NULL(test, mock_env); in hfsplus_hash_dentry_edge_cases_test()
1182 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_hash_dentry_edge_cases_test()
1187 /* Test very long filename */ in hfsplus_hash_dentry_edge_cases_test()
1194 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_edge_cases_test()
1195 KUNIT_EXPECT_NE(test, 0, str.hash); in hfsplus_hash_dentry_edge_cases_test()
1197 /* Test filename with all printable ASCII characters */ in hfsplus_hash_dentry_edge_cases_test()
1201 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_edge_cases_test()
1202 KUNIT_EXPECT_NE(test, 0, str.hash); in hfsplus_hash_dentry_edge_cases_test()
1204 /* Test with embedded null (though not typical for filenames) */ in hfsplus_hash_dentry_edge_cases_test()
1210 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_hash_dentry_edge_cases_test()
1211 KUNIT_EXPECT_NE(test, 0, str.hash); in hfsplus_hash_dentry_edge_cases_test()
1217 /* Test hfsplus_compare_dentry basic functionality */
1218 static void hfsplus_compare_dentry_basic_test(struct kunit *test) in hfsplus_compare_dentry_basic_test() argument
1225 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_compare_dentry_basic_test()
1230 /* Test identical strings */ in hfsplus_compare_dentry_basic_test()
1233 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_basic_test()
1235 /* Test different strings - lexicographic order */ in hfsplus_compare_dentry_basic_test()
1238 KUNIT_EXPECT_LT(test, result, 0); /* "hello" < "world" */ in hfsplus_compare_dentry_basic_test()
1241 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_basic_test()
1245 KUNIT_EXPECT_GT(test, result, 0); /* "world" > "hello" */ in hfsplus_compare_dentry_basic_test()
1247 /* Test empty strings */ in hfsplus_compare_dentry_basic_test()
1250 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_basic_test()
1252 /* Test one empty, one non-empty */ in hfsplus_compare_dentry_basic_test()
1253 create_qstr(&name, "test"); in hfsplus_compare_dentry_basic_test()
1255 KUNIT_EXPECT_LT(test, result, 0); /* "" < "test" */ in hfsplus_compare_dentry_basic_test()
1258 result = hfsplus_compare_dentry(&test_dentry, 4, "test", &name); in hfsplus_compare_dentry_basic_test()
1259 KUNIT_EXPECT_GT(test, result, 0); /* "test" > "" */ in hfsplus_compare_dentry_basic_test()
1264 /* Test case folding behavior in comparison */
1265 static void hfsplus_compare_dentry_casefold_test(struct kunit *test) in hfsplus_compare_dentry_casefold_test() argument
1272 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_compare_dentry_casefold_test()
1277 /* Test with case folding disabled (default) */ in hfsplus_compare_dentry_casefold_test()
1283 KUNIT_EXPECT_NE(test, 0, result); in hfsplus_compare_dentry_casefold_test()
1288 KUNIT_EXPECT_NE(test, 0, result); in hfsplus_compare_dentry_casefold_test()
1290 /* Test with case folding enabled */ in hfsplus_compare_dentry_casefold_test()
1296 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_casefold_test()
1301 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_casefold_test()
1303 /* Test mixed case */ in hfsplus_compare_dentry_casefold_test()
1304 create_qstr(&name, "TeSt"); in hfsplus_compare_dentry_casefold_test()
1305 result = hfsplus_compare_dentry(&test_dentry, 4, "test", &name); in hfsplus_compare_dentry_casefold_test()
1306 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_casefold_test()
1308 create_qstr(&name, "test"); in hfsplus_compare_dentry_casefold_test()
1309 result = hfsplus_compare_dentry(&test_dentry, 4, "TEST", &name); in hfsplus_compare_dentry_casefold_test()
1310 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_casefold_test()
1315 /* Test special character handling in comparison */
1316 static void hfsplus_compare_dentry_special_chars_test(struct kunit *test) in hfsplus_compare_dentry_special_chars_test() argument
1323 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_compare_dentry_special_chars_test()
1328 /* Test colon conversion (: becomes /) */ in hfsplus_compare_dentry_special_chars_test()
1332 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_special_chars_test()
1337 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_special_chars_test()
1339 /* Test multiple special characters */ in hfsplus_compare_dentry_special_chars_test()
1342 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_special_chars_test()
1344 /* Test mixed special and regular characters */ in hfsplus_compare_dentry_special_chars_test()
1348 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_special_chars_test()
1353 /* Test length differences */
1354 static void hfsplus_compare_dentry_length_test(struct kunit *test) in hfsplus_compare_dentry_length_test() argument
1361 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_compare_dentry_length_test()
1366 /* Test different lengths with common prefix */ in hfsplus_compare_dentry_length_test()
1368 result = hfsplus_compare_dentry(&test_dentry, 4, "test", &name); in hfsplus_compare_dentry_length_test()
1369 KUNIT_EXPECT_LT(test, result, 0); /* "test" < "testing" */ in hfsplus_compare_dentry_length_test()
1371 create_qstr(&name, "test"); in hfsplus_compare_dentry_length_test()
1373 KUNIT_EXPECT_GT(test, result, 0); /* "testing" > "test" */ in hfsplus_compare_dentry_length_test()
1375 /* Test exact length match */ in hfsplus_compare_dentry_length_test()
1378 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_length_test()
1380 /* Test length parameter vs actual string content */ in hfsplus_compare_dentry_length_test()
1383 KUNIT_EXPECT_LT(test, result, 0); /* "hel" < "hello" */ in hfsplus_compare_dentry_length_test()
1385 /* Test longer first string but shorter length parameter */ in hfsplus_compare_dentry_length_test()
1389 KUNIT_EXPECT_LT(test, result, 0); in hfsplus_compare_dentry_length_test()
1394 /* Test decomposition flag behavior */
1395 static void hfsplus_compare_dentry_decompose_test(struct kunit *test) in hfsplus_compare_dentry_decompose_test() argument
1402 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_compare_dentry_decompose_test()
1407 /* Test with decomposition disabled (default) */ in hfsplus_compare_dentry_decompose_test()
1410 create_qstr(&name, "test"); in hfsplus_compare_dentry_decompose_test()
1411 result = hfsplus_compare_dentry(&test_dentry, 4, "test", &name); in hfsplus_compare_dentry_decompose_test()
1412 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_decompose_test()
1414 /* Test with decomposition enabled */ in hfsplus_compare_dentry_decompose_test()
1417 create_qstr(&name, "test"); in hfsplus_compare_dentry_decompose_test()
1418 result = hfsplus_compare_dentry(&test_dentry, 4, "test", &name); in hfsplus_compare_dentry_decompose_test()
1419 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_decompose_test()
1423 result = hfsplus_compare_dentry(&test_dentry, 4, "test", &name); in hfsplus_compare_dentry_decompose_test()
1424 KUNIT_EXPECT_NE(test, 0, result); in hfsplus_compare_dentry_decompose_test()
1429 /* Test edge cases and boundary conditions */
1430 static void hfsplus_compare_dentry_edge_cases_test(struct kunit *test) in hfsplus_compare_dentry_edge_cases_test() argument
1445 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_compare_dentry_edge_cases_test()
1451 KUNIT_ASSERT_NOT_NULL(test, long_str); in hfsplus_compare_dentry_edge_cases_test()
1454 KUNIT_ASSERT_NOT_NULL(test, long_str2); in hfsplus_compare_dentry_edge_cases_test()
1456 /* Test very long strings */ in hfsplus_compare_dentry_edge_cases_test()
1463 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_edge_cases_test()
1465 /* Test with difference at the end of long strings */ in hfsplus_compare_dentry_edge_cases_test()
1472 KUNIT_EXPECT_LT(test, result, 0); /* 'a' < 'b' */ in hfsplus_compare_dentry_edge_cases_test()
1474 /* Test single character differences */ in hfsplus_compare_dentry_edge_cases_test()
1477 KUNIT_EXPECT_LT(test, result, 0); /* 'a' < 'b' */ in hfsplus_compare_dentry_edge_cases_test()
1481 KUNIT_EXPECT_GT(test, result, 0); /* 'b' > 'a' */ in hfsplus_compare_dentry_edge_cases_test()
1483 /* Test with null characters in the middle */ in hfsplus_compare_dentry_edge_cases_test()
1485 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_edge_cases_test()
1487 /* Test all printable ASCII characters */ in hfsplus_compare_dentry_edge_cases_test()
1490 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_edge_cases_test()
1497 /* Test combined flag behaviors */
1498 static void hfsplus_compare_dentry_combined_flags_test(struct kunit *test) in hfsplus_compare_dentry_combined_flags_test() argument
1505 KUNIT_ASSERT_NOT_NULL(test, mock_sb); in hfsplus_compare_dentry_combined_flags_test()
1510 /* Test with both casefold and decompose enabled */ in hfsplus_compare_dentry_combined_flags_test()
1516 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_combined_flags_test()
1518 /* Test special chars with case folding */ in hfsplus_compare_dentry_combined_flags_test()
1521 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_combined_flags_test()
1523 /* Test with both flags disabled */ in hfsplus_compare_dentry_combined_flags_test()
1529 KUNIT_EXPECT_NE(test, 0, result); /* Case sensitive */ in hfsplus_compare_dentry_combined_flags_test()
1534 KUNIT_EXPECT_EQ(test, 0, result); in hfsplus_compare_dentry_combined_flags_test()