1111 * http://www.apache.org/licenses/LICENSE-2.0
1212 *
1313 * Unless required by applicable law or agreed to in writing, software
14- * distributed under the License is distributed on an "AS IS" BASIS,
15- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
1616 * License for the specific language governing permissions and limitations
1717 * under the License.
1818 *
2525#include < fossil/pizza/framework.h>
2626#include " fossil/media/framework.h"
2727
28- using namespace fossil ::media;
28+ // * * * * * * * * * * * * * * * * * * * * * * * *
29+ // * Fossil Logic Test Utilities
30+ // * * * * * * * * * * * * * * * * * * * * * * * *
31+ // Setup steps for things like test fixtures and
32+ // mock objects are set here.
33+ // * * * * * * * * * * * * * * * * * * * * * * * *
2934
3035FOSSIL_TEST_SUITE (cpp_elf_fixture);
3136
3237FOSSIL_SETUP (cpp_elf_fixture) {
33- // Setup for C++ ELF tests (no-op)
38+ // Setup for ELF tests
3439}
3540
3641FOSSIL_TEARDOWN (cpp_elf_fixture) {
37- // Cleanup (no-op)
42+ // Teardown for ELF tests
3843}
3944
40- // ------------------------------------------------------------
41- // Basic magic number detection
42- // ------------------------------------------------------------
45+ // * * * * * * * * * * * * * * * * * * * * * * * *
46+ // * Fossil Logic Test Cases
47+ // * * * * * * * * * * * * * * * * * * * * * * * *
48+ // The test cases below are provided as samples, inspired
49+ // by the Meson build system's approach of using test cases
50+ // as samples for library usage.
51+ // * * * * * * * * * * * * * * * * * * * * * * * *
52+
4353FOSSIL_TEST_CASE (cpp_test_elf_is_elf_magic) {
4454 unsigned char elf_magic[4 ] = {0x7f , ' E' , ' L' , ' F' };
45- ASSUME_ITS_TRUE (Elf::is_elf (elf_magic, 4 ));
55+ ASSUME_ITS_TRUE (fossil::media::Elf::is_elf (elf_magic, 4 ));
56+ ASSUME_ITS_TRUE (fossil_media_elf_is_elf (elf_magic, 4 ));
4657}
4758
4859FOSSIL_TEST_CASE (cpp_test_elf_is_elf_non_magic) {
4960 unsigned char not_elf[4 ] = {0x00 , 0x01 , 0x02 , 0x03 };
50- ASSUME_ITS_FALSE (Elf::is_elf (not_elf, 4 ));
61+ ASSUME_ITS_FALSE (fossil::media::Elf::is_elf (not_elf, 4 ));
62+ ASSUME_ITS_FALSE (fossil_media_elf_is_elf (not_elf, 4 ));
5163}
5264
5365FOSSIL_TEST_CASE (cpp_test_elf_is_elf_short_buffer) {
5466 unsigned char elf_magic[2 ] = {0x7f , ' E' };
55- ASSUME_ITS_FALSE (Elf::is_elf (elf_magic, 2 ));
67+ ASSUME_ITS_FALSE (fossil::media::Elf::is_elf (elf_magic, 2 ));
68+ ASSUME_ITS_FALSE (fossil_media_elf_is_elf (elf_magic, 2 ));
5669}
5770
58- FOSSIL_TEST_CASE (cpp_test_elf_load_builtin_blob) {
59- Elf elf;
60- // Should successfully load a minimal ELF64 file with .text section
61- ASSUME_ITS_TRUE (elf.load_memory (FOSSIL_MEDIA_ELF_BUILTIN_BLOB,
62- FOSSIL_MEDIA_ELF_BUILTIN_BLOB_SIZE));
71+ FOSSIL_TEST_CASE (cpp_test_elf_load_from_memory_builtin_blob) {
72+ fossil::media::Elf elf;
73+ bool ok = elf.load_memory (FOSSIL_MEDIA_ELF_BUILTIN_BLOB, FOSSIL_MEDIA_ELF_BUILTIN_BLOB_SIZE);
74+ ASSUME_ITS_TRUE (ok);
6375 ASSUME_ITS_TRUE (elf.is_loaded ());
76+ ASSUME_ITS_TRUE (elf.section_count () == 3 );
6477}
6578
66- FOSSIL_TEST_CASE (cpp_test_elf_section_lookup) {
67- Elf elf;
68- ASSUME_ITS_TRUE (elf.load_memory (FOSSIL_MEDIA_ELF_BUILTIN_BLOB,
69- FOSSIL_MEDIA_ELF_BUILTIN_BLOB_SIZE));
70- ASSUME_ITS_TRUE (elf.is_loaded ());
71- ASSUME_ITS_TRUE (elf.section_count () >= 3 );
79+ FOSSIL_TEST_CASE (cpp_test_elf_get_section_name_and_data_builtin_blob) {
80+ fossil::media::Elf elf;
81+ bool ok = elf.load_memory (FOSSIL_MEDIA_ELF_BUILTIN_BLOB, FOSSIL_MEDIA_ELF_BUILTIN_BLOB_SIZE);
82+ ASSUME_ITS_TRUE (ok);
83+
84+ std::string name = elf.section_name (1 );
85+ ASSUME_ITS_TRUE (!name.empty ());
7286
73- std::string name = elf.section_name (2 );
74- ASSUME_ITS_EQUAL_CSTR (name.c_str (), " .text" );
87+ auto data = elf.section_data (1 );
88+ ASSUME_ITS_TRUE (data.first != nullptr );
89+ ASSUME_ITS_TRUE (data.second > 0 );
7590}
7691
77- FOSSIL_TEST_CASE (cpp_test_elf_section_data) {
78- Elf elf;
79- ASSUME_ITS_TRUE (elf.load_memory (FOSSIL_MEDIA_ELF_BUILTIN_BLOB,
80- FOSSIL_MEDIA_ELF_BUILTIN_BLOB_SIZE));
81- auto section = elf.section_data (2 );
82- ASSUME_ITS_EQUAL_U32 (section.second , 1U );
83- ASSUME_ITS_EQUAL_O32 (section.first [0 ], 0x90 ); // NOP
92+ FOSSIL_TEST_CASE (cpp_test_elf_find_section_by_name_builtin_blob) {
93+ fossil::media::Elf elf;
94+ bool ok = elf.load_memory (FOSSIL_MEDIA_ELF_BUILTIN_BLOB, FOSSIL_MEDIA_ELF_BUILTIN_BLOB_SIZE);
95+ ASSUME_ITS_TRUE (ok);
96+
97+ size_t idx = elf.find_section (" .text" );
98+ ASSUME_ITS_TRUE (idx >= 0 );
99+
100+ idx = elf.find_section (" .shstrtab" );
101+ ASSUME_ITS_TRUE (idx >= 0 );
84102}
85103
86- FOSSIL_TEST_CASE (cpp_test_elf_dump_does_not_crash) {
87- Elf elf;
88- ASSUME_ITS_TRUE (elf.load_memory (FOSSIL_MEDIA_ELF_BUILTIN_BLOB,
89- FOSSIL_MEDIA_ELF_BUILTIN_BLOB_SIZE));
90- // Should print to stdout safely
91- elf.dump (elf.c_struct (), stdout);
104+ FOSSIL_TEST_CASE (cpp_test_elf_strerror_known_and_unknown) {
105+ ASSUME_ITS_TRUE (strcmp (fossil_media_elf_strerror (FOSSIL_MEDIA_ELF_OK), " OK" ) == 0 );
106+ ASSUME_ITS_TRUE (strcmp (fossil_media_elf_strerror (-9999 ), " Unknown error" ) == 0 );
92107}
93108
94- // ------------------------------------------------------------
95- // Test Group Registration
96- // ------------------------------------------------------------
109+ // * * * * * * * * * * * * * * * * * * * * * * * *
110+ // * Fossil Logic Test Pool
111+ // * * * * * * * * * * * * * * * * * * * * * * * *
97112FOSSIL_TEST_GROUP (cpp_elf_tests) {
98113 FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_is_elf_magic);
99114 FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_is_elf_non_magic);
100115 FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_is_elf_short_buffer);
101116
102- FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_load_builtin_blob );
103- FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_section_lookup );
104- FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_section_data );
105- FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_dump_does_not_crash );
117+ FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_load_from_memory_builtin_blob );
118+ FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_get_section_name_and_data_builtin_blob );
119+ FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_find_section_by_name_builtin_blob );
120+ FOSSIL_TEST_ADD (cpp_elf_fixture, cpp_test_elf_strerror_known_and_unknown );
106121
107122 FOSSIL_TEST_REGISTER (cpp_elf_fixture);
108- }
123+ }
0 commit comments