Add XStringArray::remove and removeIC tests. Create var for "quiet" and

"splash".
This commit is contained in:
Jief L 2020-05-10 12:41:34 +03:00
parent 1279ce374d
commit a2b23b391f
4 changed files with 50 additions and 16 deletions

View File

@ -447,7 +447,7 @@ VOID LOADER_ENTRY::AppleIntelCPUPMPatch(UINT8 *Driver, UINT32 DriverSize, CHAR8
SEGMENT *textSeg = (SEGMENT *)&Driver[textName]; SEGMENT *textSeg = (SEGMENT *)&Driver[textName];
Start = textSeg->fileoff; Start = textSeg->fileoff;
Size = textSeg->filesize; Size = textSeg->filesize;
DBG("found __text [%d,%d]\n",Start, Size); DBG("found __text [%llu,%llu]\n",Start, Size);
if (Start > DriverSize) Start = 0; if (Start > DriverSize) Start = 0;
if (Size > DriverSize) { if (Size > DriverSize) {
Size = DriverSize; Size = DriverSize;

View File

@ -155,6 +155,37 @@ int XStringArray_tests()
array1.AddID(L"other2"_XSW); array1.AddID(L"other2"_XSW);
if ( array1.size() != 4 ) return 53; if ( array1.size() != 4 ) return 53;
} }
{
XStringArray array;
array.Add(L"word1");
array.Add(L"other2");
array.Add(L"3333");
array.Add(L"4th_item");
array.remove("WOrd1"_XS8);
if ( !array.contains("word1"_XS8) ) return 22;
array.remove("word1"_XS8);
if ( array.contains("word1"_XS8) ) return 22;
array.removeIC("oTHEr2"_XS8);
if ( array.contains("other2"_XS8) ) return 22;
array.removeIC("4th_ITEM"_XS8);
if ( array.contains("4th_item"_XS8) ) return 22;
XString8 c = array.ConcatAll();
// printf("c=%s\n", c.c_str());
}
{
XStringArray array;
array.Add(L"splash");
array.Add(L"quiet");
array.remove("splash"_XS8);
if ( array.contains("splash"_XS8) ) return 22;
array.removeIC("quiet"_XS8);
if ( array.contains("quiet"_XS8) ) return 22;
if ( array.size() != 0 ) return 22;
XString8 c = array.ConcatAll();
// printf("c=%s\n", c.c_str());
}

View File

@ -792,6 +792,9 @@ STATIC VOID AddDefaultMenu(IN LOADER_ENTRY *Entry)
BOOLEAN KernelIs64BitOnly; BOOLEAN KernelIs64BitOnly;
UINT64 os_version = AsciiOSVersionToUint64(Entry->OSVersion); UINT64 os_version = AsciiOSVersionToUint64(Entry->OSVersion);
constexpr LString8 quietLitteral = "quiet";
constexpr LString8 splashLitteral = "splash";
if (Entry == NULL) { if (Entry == NULL) {
return; return;
} }
@ -924,8 +927,8 @@ STATIC VOID AddDefaultMenu(IN LOADER_ENTRY *Entry)
} }
} else if (Entry->LoaderType == OSTYPE_LINEFI) { } else if (Entry->LoaderType == OSTYPE_LINEFI) {
BOOLEAN Quiet = Entry->LoadOptions.contains("quiet"); BOOLEAN Quiet = Entry->LoadOptions.contains(quietLitteral);
BOOLEAN WithSplash = Entry->LoadOptions.contains("splash"); BOOLEAN WithSplash = Entry->LoadOptions.contains(splashLitteral);
// default entry // default entry
SubEntry = Entry->getPartiallyDuplicatedEntry(); SubEntry = Entry->getPartiallyDuplicatedEntry();
@ -938,10 +941,10 @@ STATIC VOID AddDefaultMenu(IN LOADER_ENTRY *Entry)
if (SubEntry) { if (SubEntry) {
if (Quiet) { if (Quiet) {
SubEntry->Title.SWPrintf("%ls verbose", Entry->Title.s()); SubEntry->Title.SWPrintf("%ls verbose", Entry->Title.s());
SubEntry->LoadOptions.removeIC("quiet"_XS8); SubEntry->LoadOptions.removeIC(quietLitteral);
} else { } else {
SubEntry->Title.SWPrintf("%ls quiet", Entry->Title.s()); SubEntry->Title.SWPrintf("%ls quiet", Entry->Title.s());
SubEntry->LoadOptions.AddID("quiet"_XS8); SubEntry->LoadOptions.AddID(quietLitteral);
} }
} }
SubScreen->AddMenuEntry(SubEntry, true); SubScreen->AddMenuEntry(SubEntry, true);
@ -949,10 +952,10 @@ STATIC VOID AddDefaultMenu(IN LOADER_ENTRY *Entry)
if (SubEntry) { if (SubEntry) {
if (WithSplash) { if (WithSplash) {
SubEntry->Title.SWPrintf("%ls without splash", Entry->Title.s()); SubEntry->Title.SWPrintf("%ls without splash", Entry->Title.s());
SubEntry->LoadOptions.removeIC("splash"_XS8); SubEntry->LoadOptions.removeIC(splashLitteral);
} else { } else {
SubEntry->Title.SWPrintf("%ls with splash", Entry->Title.s()); SubEntry->Title.SWPrintf("%ls with splash", Entry->Title.s());
SubEntry->LoadOptions.AddID("splash"_XS8); SubEntry->LoadOptions.AddID(splashLitteral);
} }
} }
SubScreen->AddMenuEntry(SubEntry, true); SubScreen->AddMenuEntry(SubEntry, true);
@ -961,22 +964,22 @@ STATIC VOID AddDefaultMenu(IN LOADER_ENTRY *Entry)
if (WithSplash) { if (WithSplash) {
if (Quiet) { if (Quiet) {
SubEntry->Title.SWPrintf("%ls verbose without splash", Entry->Title.s()); SubEntry->Title.SWPrintf("%ls verbose without splash", Entry->Title.s());
SubEntry->LoadOptions.removeIC("splash"_XS8); SubEntry->LoadOptions.removeIC(splashLitteral);
SubEntry->LoadOptions.removeIC("quiet"_XS8); SubEntry->LoadOptions.removeIC(quietLitteral);
} else { } else {
SubEntry->Title.SWPrintf("%ls quiet without splash", Entry->Title.s()); SubEntry->Title.SWPrintf("%ls quiet without splash", Entry->Title.s());
SubEntry->LoadOptions.removeIC("splash"_XS8); SubEntry->LoadOptions.removeIC(splashLitteral);
SubEntry->LoadOptions.Add("quiet"_XS8); SubEntry->LoadOptions.Add(quietLitteral);
} }
} else if (Quiet) { } else if (Quiet) {
// TempOptions.RemoveIC("quiet"_XS8); // TempOptions.RemoveIC(quietLitteral);
SubEntry->Title.SWPrintf("%ls verbose with splash", Entry->Title.s()); SubEntry->Title.SWPrintf("%ls verbose with splash", Entry->Title.s());
SubEntry->LoadOptions.AddID("splash"_XS8); SubEntry->LoadOptions.AddID(splashLitteral);
// FreePool(TempOptions); // FreePool(TempOptions);
} else { } else {
SubEntry->Title.SWPrintf("%ls quiet with splash", Entry->Title.s()); SubEntry->Title.SWPrintf("%ls quiet with splash", Entry->Title.s());
SubEntry->LoadOptions.AddID("quiet"_XS8); SubEntry->LoadOptions.AddID(quietLitteral);
SubEntry->LoadOptions.AddID("splash"_XS8); SubEntry->LoadOptions.AddID(splashLitteral);
} }
} }
SubScreen->AddMenuEntry(SubEntry, true); SubScreen->AddMenuEntry(SubEntry, true);

View File

@ -84,7 +84,7 @@ void XCinema::AddFilm(FILM* NewFilm)
static XImage NullImage; static XImage NullImage;
const XImage& FILM::GetImage(INTN Index) const const XImage& FILM::GetImage(INTN Index) const
{ {
DBG("ask for frame #%lld from total of %lld\n", Index, Frames.size()); DBG("ask for frame #%lld from total of %zu\n", Index, Frames.size());
for (size_t i = 0; i < Frames.size(); ++i) { for (size_t i = 0; i < Frames.size(); ++i) {
if (Frames[i].getIndex() == Index) { if (Frames[i].getIndex() == Index) {
DBG("...found\n"); DBG("...found\n");