mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2025-08-13 10:47:44 +00:00
Freqman UI (#1255)
* FreqmanDB direct file * Clear UI for short lists * Final touches on freqlist UI. * Support vertical alignment in NewButton * New buttons in FreqMan * Wiring up UI to filewrapper actions * Work around empty file
This commit is contained in:
@@ -42,14 +42,15 @@ add_executable(application_test EXCLUDE_FROM_ALL
|
||||
${PROJECT_SOURCE_DIR}/test_freqman_db.cpp
|
||||
${PROJECT_SOURCE_DIR}/test_mock_file.cpp
|
||||
${PROJECT_SOURCE_DIR}/test_optional.cpp
|
||||
${PROJECT_SOURCE_DIR}/test_string_format.cpp
|
||||
${PROJECT_SOURCE_DIR}/test_utility.cpp
|
||||
|
||||
${PROJECT_SOURCE_DIR}/../../application/file_reader.cpp
|
||||
${PROJECT_SOURCE_DIR}/../../application/freqman_db.cpp
|
||||
${PROJECT_SOURCE_DIR}/../../application/string_format.cpp
|
||||
|
||||
|
||||
# Dependencies
|
||||
${PROJECT_SOURCE_DIR}/../../application/file.cpp
|
||||
${PROJECT_SOURCE_DIR}/../../application/string_format.cpp
|
||||
${PROJECT_SOURCE_DIR}/../../application/tone_key.cpp
|
||||
${PROJECT_SOURCE_DIR}/linker_stubs.cpp
|
||||
)
|
||||
|
@@ -166,14 +166,44 @@ TEST_CASE("It can parse tone freq") {
|
||||
CHECK_EQ(e.tone, 3);
|
||||
}
|
||||
|
||||
#if 0 // New tables for a future PR.
|
||||
TEST_CASE("It can serialize basic Single entry") {
|
||||
auto str = to_freqman_string(freqman_entry{
|
||||
.frequency_a = 123'456'000,
|
||||
.description = "Foobar",
|
||||
.type = freqman_type::Single,
|
||||
});
|
||||
CHECK(str == "f=123456000,d=Foobar");
|
||||
}
|
||||
|
||||
TEST_CASE("It can serialize basic Range entry") {
|
||||
auto str = to_freqman_string(freqman_entry{
|
||||
.frequency_a = 123'456'000,
|
||||
.frequency_b = 423'456'000,
|
||||
.description = "Foobar",
|
||||
.type = freqman_type::Range,
|
||||
});
|
||||
CHECK(str == "a=123456000,b=423456000,d=Foobar");
|
||||
}
|
||||
|
||||
TEST_CASE("It can serialize basic HamRadio entry") {
|
||||
auto str = to_freqman_string(freqman_entry{
|
||||
.frequency_a = 123'456'000,
|
||||
.frequency_b = 423'456'000,
|
||||
.description = "Foobar",
|
||||
.type = freqman_type::HamRadio,
|
||||
});
|
||||
CHECK(str == "r=123456000,t=423456000,d=Foobar");
|
||||
}
|
||||
|
||||
// New tables for a future PR.
|
||||
/*
|
||||
TEST_CASE("It can parse modulation") {
|
||||
freqman_entry e;
|
||||
REQUIRE(
|
||||
parse_freqman_entry(
|
||||
"f=123000000,d=This is the description.,m=AM", e));
|
||||
CHECK_EQ(e.modulation, freqman_modulation::AM);
|
||||
|
||||
|
||||
REQUIRE(
|
||||
parse_freqman_entry(
|
||||
"f=123000000,d=This is the description.,m=NFM", e));
|
||||
@@ -201,7 +231,7 @@ TEST_CASE("It can parse frequency step") {
|
||||
parse_freqman_entry(
|
||||
"f=123000000,d=This is the description.,s=0.1kHz", e));
|
||||
CHECK_EQ(e.step, freqman_step::_100Hz);
|
||||
|
||||
|
||||
REQUIRE(
|
||||
parse_freqman_entry(
|
||||
"f=123000000,d=This is the description.,s=50kHz", e));
|
||||
@@ -212,6 +242,6 @@ TEST_CASE("It can parse frequency step") {
|
||||
"f=123000000,d=This is the description.,s=FOO", e));
|
||||
CHECK_EQ(e.step, freqman_step::Unknown);
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
|
||||
TEST_SUITE_END();
|
||||
|
49
firmware/test/application/test_string_format.cpp
Normal file
49
firmware/test/application/test_string_format.cpp
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Kyle Reed
|
||||
*
|
||||
* This file is part of PortaPack.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "doctest.h"
|
||||
#include "string_format.hpp"
|
||||
|
||||
/* TODO: Tests for all string_format functions. */
|
||||
|
||||
TEST_CASE("to_string_dec_uint64 returns correct value.") {
|
||||
CHECK_EQ(to_string_dec_uint64(0), "0");
|
||||
CHECK_EQ(to_string_dec_uint64(1), "1");
|
||||
CHECK_EQ(to_string_dec_uint64(1'000'000), "1000000");
|
||||
CHECK_EQ(to_string_dec_uint64(1'234'567'890), "1234567890");
|
||||
CHECK_EQ(to_string_dec_uint64(1'234'567'891), "1234567891");
|
||||
}
|
||||
|
||||
/*TEST_CASE("to_string_freq returns correct value.") {
|
||||
CHECK_EQ(to_string_freq(0), "0");
|
||||
CHECK_EQ(to_string_freq(1), "1");
|
||||
CHECK_EQ(to_string_freq(1'000'000), "1000000");
|
||||
CHECK_EQ(to_string_freq(1'234'567'890), "1234567890");
|
||||
CHECK_EQ(to_string_freq(1'234'567'891), "1234567891");
|
||||
}*/
|
||||
|
||||
TEST_CASE("trim removes whitespace.") {
|
||||
CHECK(trim(" foo\n") == "foo");
|
||||
}
|
||||
|
||||
TEST_CASE("trim returns empty for only whitespace.") {
|
||||
CHECK(trim(" \n").empty());
|
||||
}
|
Reference in New Issue
Block a user