1e3ac6352SYouling Tang // SPDX-License-Identifier: GPL-2.0-or-later 2e3ac6352SYouling Tang /* 3e3ac6352SYouling Tang * 4e3ac6352SYouling Tang * KUnit tests of SMB1 maperror 5e3ac6352SYouling Tang * 6e3ac6352SYouling Tang * Copyright (C) 2026 KylinSoft Co., Ltd. All rights reserved. 7e3ac6352SYouling Tang * Author(s): Youling Tang <tangyouling@kylinos.cn> 8e3ac6352SYouling Tang * ChenXiaoSong <chenxiaosong@kylinos.cn> 9e3ac6352SYouling Tang * 10e3ac6352SYouling Tang */ 11e3ac6352SYouling Tang 12e3ac6352SYouling Tang #include <kunit/test.h> 13e3ac6352SYouling Tang #include "smb1proto.h" 14e3ac6352SYouling Tang #include "nterr.h" 1585274a3bSYouling Tang #include "smberr.h" 16e3ac6352SYouling Tang 17e3ac6352SYouling Tang #define DEFINE_CHECK_SEARCH_FUNC(__struct_name, __field, \ 18e3ac6352SYouling Tang __array, __num) \ 19e3ac6352SYouling Tang static void check_search_ ## __array(struct kunit *test) \ 20e3ac6352SYouling Tang { \ 21e3ac6352SYouling Tang unsigned int i; \ 22e3ac6352SYouling Tang const struct __struct_name *expect, *result; \ 23e3ac6352SYouling Tang \ 24e3ac6352SYouling Tang for (i = 0; i < __num; i++) { \ 25e3ac6352SYouling Tang expect = &__array ## _test[i]; \ 26e3ac6352SYouling Tang result = search_ ## __array ## _test(expect->__field); \ 27e3ac6352SYouling Tang KUNIT_ASSERT_NOT_NULL(test, result); \ 28e3ac6352SYouling Tang test_cmp_ ## __struct_name(test, expect, result); \ 29e3ac6352SYouling Tang } \ 30e3ac6352SYouling Tang } 31e3ac6352SYouling Tang 32e3ac6352SYouling Tang static void 33e3ac6352SYouling Tang test_cmp_ntstatus_to_dos_err(struct kunit *test, 34e3ac6352SYouling Tang const struct ntstatus_to_dos_err *expect, 35e3ac6352SYouling Tang const struct ntstatus_to_dos_err *result) 36e3ac6352SYouling Tang { 37e3ac6352SYouling Tang KUNIT_EXPECT_EQ(test, expect->dos_class, result->dos_class); 38e3ac6352SYouling Tang KUNIT_EXPECT_EQ(test, expect->dos_code, result->dos_code); 39e3ac6352SYouling Tang KUNIT_EXPECT_EQ(test, expect->ntstatus, result->ntstatus); 40e3ac6352SYouling Tang KUNIT_EXPECT_STREQ(test, expect->nt_errstr, result->nt_errstr); 41e3ac6352SYouling Tang } 42e3ac6352SYouling Tang 4385274a3bSYouling Tang static void 4485274a3bSYouling Tang test_cmp_smb_to_posix_error(struct kunit *test, 4585274a3bSYouling Tang const struct smb_to_posix_error *expect, 4685274a3bSYouling Tang const struct smb_to_posix_error *result) 4785274a3bSYouling Tang { 4885274a3bSYouling Tang KUNIT_EXPECT_EQ(test, expect->smb_err, result->smb_err); 4985274a3bSYouling Tang KUNIT_EXPECT_EQ(test, expect->posix_code, result->posix_code); 5085274a3bSYouling Tang } 5185274a3bSYouling Tang 52e3ac6352SYouling Tang /* check_search_ntstatus_to_dos_map */ 53e3ac6352SYouling Tang DEFINE_CHECK_SEARCH_FUNC(ntstatus_to_dos_err, ntstatus, ntstatus_to_dos_map, 54e3ac6352SYouling Tang ntstatus_to_dos_num); 5585274a3bSYouling Tang /* check_search_mapping_table_ERRDOS */ 5685274a3bSYouling Tang DEFINE_CHECK_SEARCH_FUNC(smb_to_posix_error, smb_err, mapping_table_ERRDOS, 5785274a3bSYouling Tang mapping_table_ERRDOS_num); 5885274a3bSYouling Tang /* check_search_mapping_table_ERRSRV */ 5985274a3bSYouling Tang DEFINE_CHECK_SEARCH_FUNC(smb_to_posix_error, smb_err, mapping_table_ERRSRV, 6085274a3bSYouling Tang mapping_table_ERRSRV_num); 61e3ac6352SYouling Tang 62e3ac6352SYouling Tang static struct kunit_case maperror_test_cases[] = { 63e3ac6352SYouling Tang KUNIT_CASE(check_search_ntstatus_to_dos_map), 6485274a3bSYouling Tang KUNIT_CASE(check_search_mapping_table_ERRDOS), 6585274a3bSYouling Tang KUNIT_CASE(check_search_mapping_table_ERRSRV), 66e3ac6352SYouling Tang {} 67e3ac6352SYouling Tang }; 68e3ac6352SYouling Tang 69e3ac6352SYouling Tang static struct kunit_suite maperror_suite = { 70e3ac6352SYouling Tang .name = "smb1_maperror", 71e3ac6352SYouling Tang .test_cases = maperror_test_cases, 72e3ac6352SYouling Tang }; 73e3ac6352SYouling Tang 74e3ac6352SYouling Tang kunit_test_suite(maperror_suite); 75e3ac6352SYouling Tang 76e3ac6352SYouling Tang MODULE_LICENSE("GPL"); 77*bc1a64d2SVenkat Rao Bagalkote MODULE_DESCRIPTION("KUnit tests of SMB1 maperror"); 78