Collect all of the various spread out 3rd party licenses to a single file.
[SquirrelJME.git] / nanocoat / tests / testRomSuiteLibraries.c
blob00f7849a246c61b8ecdcfd189b6039b158883116
1 /* -*- Mode: C; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
3 // SquirrelJME
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the Mozilla Public License Version 2.0.
7 // See license.mkd for licensing and copyright information.
8 // -------------------------------------------------------------------------*/
10 #include <string.h>
12 #include "mock.h"
13 #include "proto.h"
14 #include "sjme/romInternal.h"
15 #include "test.h"
16 #include "unit.h"
18 /** Just easily returned accordingly. */
19 static sjme_list_sjme_rom_library testFakeSuiteList =
21 .length = 0,
22 .elementSize = sizeof(sjme_rom_library)
25 static sjme_errorCode testSuiteList(
26 sjme_attrInNotNull sjme_rom_suite targetSuite,
27 sjme_attrOutNotNull sjme_list_sjme_rom_library** outLibraries)
29 *outLibraries = &testFakeSuiteList;
30 return SJME_ERROR_NONE;
33 static sjme_jboolean configRomSuiteLibraries(
34 sjme_attrInNotNull sjme_mock* inState,
35 sjme_attrInNotNull sjme_mock_configWork* inCurrent)
37 sjme_mock_configDataRomSuite* romSuite;
39 romSuite = &inCurrent->data.romSuite;
41 if (inCurrent->type == SJME_MOCK_DO_TYPE_ROM_SUITE)
42 romSuite->functions.list = testSuiteList;
44 return SJME_JNI_TRUE;
47 /** Mock set for test. */
48 static const sjme_mock_configSet mockRomSuiteLibraries =
50 configRomSuiteLibraries,
53 /* Mock calls. */
55 sjme_mock_doRomSuite,
56 NULL
60 /**
61 * Tests that suite libraries can be obtained.
63 * @since 2023/12/21
65 SJME_TEST_DECLARE(testRomSuiteLibraries)
67 sjme_mock mockState;
68 sjme_rom_suite suite;
69 sjme_list_sjme_rom_library* libraries;
70 sjme_errorCode error;
72 /* Initialize mocks. */
73 memset(&mockState, 0, sizeof(mockState));
74 if (!sjme_mock_act(test, &mockState,
75 &mockRomSuiteLibraries, 0))
76 return sjme_unit_fail(test, "Could not run mocks.");
78 /* Get the suite we created. */
79 suite = mockState.romSuites[0];
81 /* Call the libraries list. */
82 libraries = NULL;
83 if (sjme_error_is(error = sjme_rom_suiteLibraries(suite,
84 &libraries)) || libraries == NULL)
85 return sjme_unit_fail(test, "Could not get libraries list: %d", error);
87 /* The result should be our fake libraries. */
88 sjme_unit_equalP(test, libraries, &testFakeSuiteList,
89 "Different set of libraries returned?");
91 /* The cache should get our libraries. */
92 sjme_unit_equalP(test, suite->cache.libraries, &testFakeSuiteList,
93 "Library list was not cached?");
95 /* Success! */
96 return SJME_TEST_RESULT_PASS;