From 67add0da93be2f3ab4eec2cf28d7648d307520c9 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Tue, 21 May 2024 22:23:53 -0400 Subject: [PATCH] Use both sources. --- Analyser/Static/Acorn/StaticAnalyser.cpp | 7 ++++--- .../ArchimedesStaticAnalyserTests.mm | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Analyser/Static/Acorn/StaticAnalyser.cpp b/Analyser/Static/Acorn/StaticAnalyser.cpp index 6edb79728..6c4a830d6 100644 --- a/Analyser/Static/Acorn/StaticAnalyser.cpp +++ b/Analyser/Static/Acorn/StaticAnalyser.cpp @@ -152,8 +152,6 @@ Analyser::Static::TargetList Analyser::Static::Acorn::GetTargets(const Media &me // Also look for the best possible startup program name, if it can be discerned. std::multimap> options; - const std::string &disk_title = - (adfs_catalogue->name.empty() || adfs_catalogue->name == "$") ? file_name : adfs_catalogue->name; for(const auto &file: adfs_catalogue->files) { // Skip non-Pling files. if(file.name[0] != '!') continue; @@ -175,7 +173,10 @@ Analyser::Static::TargetList Analyser::Static::Acorn::GetTargets(const Media &me const auto has_read = has(std::begin(read), std::end(read)); const auto has_boot = has(std::begin(boot), std::end(boot)); - const auto probability = Numeric::similarity(file.name, disk_title) - ((has_read || has_boot) ? 0.2 : 0.0); + const auto probability = + Numeric::similarity(file.name, adfs_catalogue->name) + + Numeric::similarity(file.name, file_name) - + ((has_read || has_boot) ? 0.2 : 0.0); options.emplace(probability, file.name); } diff --git a/OSBindings/Mac/Clock SignalTests/ArchimedesStaticAnalyserTests.mm b/OSBindings/Mac/Clock SignalTests/ArchimedesStaticAnalyserTests.mm index 78cf5b9f1..d36009bf0 100644 --- a/OSBindings/Mac/Clock SignalTests/ArchimedesStaticAnalyserTests.mm +++ b/OSBindings/Mac/Clock SignalTests/ArchimedesStaticAnalyserTests.mm @@ -23,10 +23,21 @@ static NSDictionary *mainProgramsBySHA1 = @{ @"2e1cb15cde588e22f50518b6ffa47a8df89b14c0": @"!Fire_Ice", @"069592c0b90a0b9112daf014b7e19b4a51f9653b": @"!UIM", @"14c3785b3bc3f7e2d4a81e92ff06e11656e6b76c": @"!UIM", + @"93b67127286d861e4df31cac27e78e623a1e852f": @"!FineRacer", + @"53f95c169bbe9cfa7252d90d6181ced31086f1a5": @"!adventure", + @"4168bb21f6df0976ce227a20f9fa4eb240289f3b": @"!BigBang", + @"8fcad522ea22b75b393ceb334cfef3f324b248ee": @"!E-TYPE", + @"8ca4289ac423d4878129cb17d6177123b321108f": @"!StrtWrite", + @"4f92efecfc1e3a510a816f570ccb7082f0154e37": @"!HeroQuest", // Various things that are not the first disk. @"2cff99237837e2291b845eb63977362ad9b4f040": @"", @"3615bcb8a953fbba3d56a956243341a022208101": @"", + @"03672244691b292d6b4816aa592b312ea6297b22": @"", + @"b7139d9bd927b8e4d933fd8aa3080a7249117495": @"", + @"66a82651f86d9cf0aa5b54c55bcaa8fefd3901da": @"", + @"c3d3cd9e28f5e7499fd70057f820c75219538c69": @"", + }; #undef Record @@ -54,6 +65,10 @@ static NSDictionary *mainProgramsBySHA1 = @{ continue; } + if(![mainProgram length]) { + continue; + } + // Test equality. auto *const target = dynamic_cast(targets.front().get()); XCTAssert(target != nullptr);