Unify codeing style.

This commit is contained in:
2026-05-25 20:48:08 +08:00
parent e1269de80e
commit 937f1dd3a9
5 changed files with 72 additions and 72 deletions
+4 -4
View File
@@ -28,9 +28,9 @@ public class AudioMetadataReaderTest
private static (Dictionary<string, string> basic, Dictionary<string, string> meta, Dictionary<string, string> extra) private static (Dictionary<string, string> basic, Dictionary<string, string> meta, Dictionary<string, string> extra)
ParseAtlTxt(string atlPath) ParseAtlTxt(string atlPath)
{ {
var basic = new Dictionary<string, string>(); Dictionary<string, string> basic = new();
var meta = new Dictionary<string, string>(); Dictionary<string, string> meta = new();
var extra = new Dictionary<string, string>(); Dictionary<string, string> extra = new();
string[] lines = File.ReadAllLines(atlPath); string[] lines = File.ReadAllLines(atlPath);
string section = ""; string section = "";
@@ -135,7 +135,7 @@ public class AudioMetadataReaderTest
if (atlPath == null) if (atlPath == null)
continue; continue;
var (basic, metaFields, extra) = ParseAtlTxt(atlPath); (Dictionary<string, string> basic, Dictionary<string, string> metaFields, Dictionary<string, string> extra) = ParseAtlTxt(atlPath);
// 基础技术参数与 ATL 一致 // 基础技术参数与 ATL 一致
Assert.Equal(int.Parse(basic["DurationMs"]) / 1000.0, meta.Duration); Assert.Equal(int.Parse(basic["DurationMs"]) / 1000.0, meta.Duration);
+31 -31
View File
@@ -20,16 +20,16 @@ public class DatabaseTests
Database.InitializeDatabase(dbName); Database.InitializeDatabase(dbName);
// Assert — 用自己的 SQLite 连接验证 // Assert — 用自己的 SQLite 连接验证
using var conn = new SQLiteConnection($"Data Source={dbPath};Version=3;"); using SQLiteConnection conn = new($"Data Source={dbPath};Version=3;");
conn.Open(); conn.Open();
// 1. 表存在 // 1. 表存在
var tableCount = conn.ExecuteScalar<int>( int tableCount = conn.ExecuteScalar<int>(
"SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='audio_files';"); "SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='audio_files';");
Assert.Equal(1, tableCount); Assert.Equal(1, tableCount);
// 2. 核心列存在(抽查) // 2. 核心列存在(抽查)
var columns = conn.Query<string>( HashSet<string> columns = conn.Query<string>(
"SELECT name FROM pragma_table_info('audio_files') ORDER BY cid;").ToHashSet(); "SELECT name FROM pragma_table_info('audio_files') ORDER BY cid;").ToHashSet();
Assert.Contains("id", columns); Assert.Contains("id", columns);
Assert.Contains("unique_id", columns); Assert.Contains("unique_id", columns);
@@ -41,7 +41,7 @@ public class DatabaseTests
Assert.Contains("description", columns); Assert.Contains("description", columns);
// 3. 索引存在 // 3. 索引存在
var indexes = conn.Query<string>( HashSet<string> indexes = conn.Query<string>(
"SELECT name FROM sqlite_master WHERE type='index' AND tbl_name='audio_files';") "SELECT name FROM sqlite_master WHERE type='index' AND tbl_name='audio_files';")
.ToHashSet(); .ToHashSet();
Assert.Contains("idx_file_name", indexes); Assert.Contains("idx_file_name", indexes);
@@ -72,9 +72,9 @@ public class DatabaseTests
Assert.Null(exception); Assert.Null(exception);
// 表仍然只有一个 // 表仍然只有一个
using var conn = new SQLiteConnection($"Data Source={dbPath};Version=3;"); using SQLiteConnection conn = new($"Data Source={dbPath};Version=3;");
conn.Open(); conn.Open();
var tableCount = conn.ExecuteScalar<int>( int tableCount = conn.ExecuteScalar<int>(
"SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='audio_files';"); "SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='audio_files';");
Assert.Equal(1, tableCount); Assert.Equal(1, tableCount);
} }
@@ -88,7 +88,7 @@ public class DatabaseTests
private static AudioFileMeta CreateSampleMeta(int id = 0) private static AudioFileMeta CreateSampleMeta(int id = 0)
{ {
var guid = Guid.NewGuid().ToString("N"); string guid = Guid.NewGuid().ToString("N");
return new AudioFileMeta return new AudioFileMeta
{ {
Id = id, Id = id,
@@ -119,9 +119,9 @@ public class DatabaseTests
private static void DeleteTestEntries(params string[] uniqueIds) private static void DeleteTestEntries(params string[] uniqueIds)
{ {
using var conn = new SQLiteConnection($"Data Source={GetDefaultDbPath()};Version=3;"); using SQLiteConnection conn = new($"Data Source={GetDefaultDbPath()};Version=3;");
conn.Open(); conn.Open();
foreach (var uid in uniqueIds) foreach (string uid in uniqueIds)
conn.Execute("DELETE FROM audio_files WHERE unique_id = @UniqueId", new { UniqueId = uid }); conn.Execute("DELETE FROM audio_files WHERE unique_id = @UniqueId", new { UniqueId = uid });
} }
@@ -129,12 +129,12 @@ public class DatabaseTests
public void AddEntry_Then_GetEntryById_ShouldReturnRecord() public void AddEntry_Then_GetEntryById_ShouldReturnRecord()
{ {
Database.InitializeDatabase(); Database.InitializeDatabase();
var meta = CreateSampleMeta(); AudioFileMeta meta = CreateSampleMeta();
Assert.True(Database.AddEntry(meta)); Assert.True(Database.AddEntry(meta));
try try
{ {
var retrieved = Database.GetEntryById(meta.Id); AudioFileMeta? retrieved = Database.GetEntryById(meta.Id);
Assert.NotNull(retrieved); Assert.NotNull(retrieved);
Assert.Equal(meta.UniqueId, retrieved!.UniqueId); Assert.Equal(meta.UniqueId, retrieved!.UniqueId);
Assert.Equal(meta.Filename, retrieved.Filename); Assert.Equal(meta.Filename, retrieved.Filename);
@@ -150,7 +150,7 @@ public class DatabaseTests
public void GetEntryById_NotFound_ShouldReturnNull() public void GetEntryById_NotFound_ShouldReturnNull()
{ {
Database.InitializeDatabase(); Database.InitializeDatabase();
var result = Database.GetEntryById(int.MaxValue); AudioFileMeta? result = Database.GetEntryById(int.MaxValue);
Assert.Null(result); Assert.Null(result);
} }
@@ -158,12 +158,12 @@ public class DatabaseTests
public void AddEntry_Then_GetEntryByUniqueId_ShouldReturnRecord() public void AddEntry_Then_GetEntryByUniqueId_ShouldReturnRecord()
{ {
Database.InitializeDatabase(); Database.InitializeDatabase();
var meta = CreateSampleMeta(); AudioFileMeta meta = CreateSampleMeta();
Database.AddEntry(meta); Database.AddEntry(meta);
try try
{ {
var retrieved = Database.GetEntryByUniqueId(meta.UniqueId); AudioFileMeta? retrieved = Database.GetEntryByUniqueId(meta.UniqueId);
Assert.NotNull(retrieved); Assert.NotNull(retrieved);
Assert.Equal(meta.Md5, retrieved!.Md5); Assert.Equal(meta.Md5, retrieved!.Md5);
} }
@@ -177,7 +177,7 @@ public class DatabaseTests
public void GetEntryByUniqueId_NotFound_ShouldReturnNull() public void GetEntryByUniqueId_NotFound_ShouldReturnNull()
{ {
Database.InitializeDatabase(); Database.InitializeDatabase();
var result = Database.GetEntryByUniqueId("nonexistent-guid"); AudioFileMeta? result = Database.GetEntryByUniqueId("nonexistent-guid");
Assert.Null(result); Assert.Null(result);
} }
@@ -185,18 +185,18 @@ public class DatabaseTests
public void QueryEntries_ShouldFilterBySearchText() public void QueryEntries_ShouldFilterBySearchText()
{ {
Database.InitializeDatabase(); Database.InitializeDatabase();
var meta = CreateSampleMeta(); AudioFileMeta meta = CreateSampleMeta();
meta.Description = "Unique underwater ambience loop"; meta.Description = "Unique underwater ambience loop";
meta.Keywords = "water,ocean,deep"; meta.Keywords = "water,ocean,deep";
Database.AddEntry(meta); Database.AddEntry(meta);
try try
{ {
var results = Database.QueryEntries(searchText: "underwater").ToList(); List<AudioFileMeta> results = Database.QueryEntries(searchText: "underwater").ToList();
Assert.Single(results); Assert.Single(results);
Assert.Equal(meta.UniqueId, results[0].UniqueId); Assert.Equal(meta.UniqueId, results[0].UniqueId);
var empty = Database.QueryEntries(searchText: "zzz_nonexistent_zzz").ToList(); List<AudioFileMeta> empty = Database.QueryEntries(searchText: "zzz_nonexistent_zzz").ToList();
Assert.Empty(empty); Assert.Empty(empty);
} }
finally finally
@@ -209,16 +209,16 @@ public class DatabaseTests
public void QueryEntries_ShouldFilterByDuration() public void QueryEntries_ShouldFilterByDuration()
{ {
Database.InitializeDatabase(); Database.InitializeDatabase();
var shortMeta = CreateSampleMeta(); AudioFileMeta shortMeta = CreateSampleMeta();
shortMeta.Duration = 1.0; shortMeta.Duration = 1.0;
var longMeta = CreateSampleMeta(); AudioFileMeta longMeta = CreateSampleMeta();
longMeta.Duration = 10.0; longMeta.Duration = 10.0;
Database.AddEntries(new[] { shortMeta, longMeta }); Database.AddEntries([shortMeta, longMeta]);
try try
{ {
var results = Database.QueryEntries(minDuration: 5.0).ToList(); List<AudioFileMeta> results = Database.QueryEntries(minDuration: 5.0).ToList();
Assert.Single(results); Assert.Single(results);
Assert.Equal(longMeta.UniqueId, results[0].UniqueId); Assert.Equal(longMeta.UniqueId, results[0].UniqueId);
} }
@@ -232,12 +232,12 @@ public class DatabaseTests
public void QueryEntries_ShouldSupportPagination() public void QueryEntries_ShouldSupportPagination()
{ {
Database.InitializeDatabase(); Database.InitializeDatabase();
var entries = Enumerable.Range(0, 5).Select(_ => CreateSampleMeta()).ToList(); List<AudioFileMeta> entries = Enumerable.Range(0, 5).Select(_ => CreateSampleMeta()).ToList();
Database.AddEntries(entries); Database.AddEntries(entries);
try try
{ {
var page = Database.QueryEntries(limit: 2, offset: 1).ToList(); List<AudioFileMeta> page = Database.QueryEntries(limit: 2, offset: 1).ToList();
Assert.Equal(2, page.Count); Assert.Equal(2, page.Count);
} }
finally finally
@@ -250,13 +250,13 @@ public class DatabaseTests
public void SearchEntries_ShouldFindByKeyword() public void SearchEntries_ShouldFindByKeyword()
{ {
Database.InitializeDatabase(); Database.InitializeDatabase();
var meta = CreateSampleMeta(); AudioFileMeta meta = CreateSampleMeta();
meta.Keywords = "magic,spell,fireball"; meta.Keywords = "magic,spell,fireball";
Database.AddEntry(meta); Database.AddEntry(meta);
try try
{ {
var results = Database.SearchEntries("fireball").ToList(); List<AudioFileMeta> results = Database.SearchEntries("fireball").ToList();
Assert.Single(results); Assert.Single(results);
} }
finally finally
@@ -269,14 +269,14 @@ public class DatabaseTests
public void GetTotalCount_ShouldRespectSearchFilter() public void GetTotalCount_ShouldRespectSearchFilter()
{ {
Database.InitializeDatabase(); Database.InitializeDatabase();
var meta = CreateSampleMeta(); AudioFileMeta meta = CreateSampleMeta();
var uniqueTag = $"UNIQUE_TAG_{meta.UniqueId[..8]}"; string uniqueTag = $"UNIQUE_TAG_{meta.UniqueId[..8]}";
meta.Description = uniqueTag; meta.Description = uniqueTag;
Database.AddEntry(meta); Database.AddEntry(meta);
try try
{ {
var count = Database.GetTotalCount(searchText: uniqueTag); int count = Database.GetTotalCount(searchText: uniqueTag);
Assert.Equal(1, count); Assert.Equal(1, count);
} }
finally finally
@@ -289,11 +289,11 @@ public class DatabaseTests
public void AddEntries_ShouldReturnCorrectCount() public void AddEntries_ShouldReturnCorrectCount()
{ {
Database.InitializeDatabase(); Database.InitializeDatabase();
var entries = Enumerable.Range(0, 3).Select(_ => CreateSampleMeta()).ToList(); List<AudioFileMeta> entries = Enumerable.Range(0, 3).Select(_ => CreateSampleMeta()).ToList();
try try
{ {
var count = Database.AddEntries(entries); int count = Database.AddEntries(entries);
Assert.Equal(3, count); Assert.Equal(3, count);
} }
finally finally
+8 -8
View File
@@ -6,7 +6,7 @@ namespace Core.Tests;
public class IntegratedTest public class IntegratedTest
{ {
private static readonly string _dataSourceRoot = "/Volumes/Library/Boom Library/Boom Library - Alien Life/Alien_Life_DS"; private static readonly string _dataSourceRoot = "/Volumes/Library/Boom Library/Boom Library - Alien Life";
private static string GetWavDir(string vendor) private static string GetWavDir(string vendor)
{ {
@@ -19,9 +19,9 @@ public class IntegratedTest
private static void DeleteTestEntries(params string[] uniqueIds) private static void DeleteTestEntries(params string[] uniqueIds)
{ {
using var conn = new SQLiteConnection($"Data Source={GetDefaultDbPath()};Version=3;"); using SQLiteConnection conn = new($"Data Source={GetDefaultDbPath()};Version=3;");
conn.Open(); conn.Open();
foreach (var uid in uniqueIds) foreach (string uid in uniqueIds)
conn.Execute("DELETE FROM audio_files WHERE unique_id = @UniqueId", new { UniqueId = uid }); conn.Execute("DELETE FROM audio_files WHERE unique_id = @UniqueId", new { UniqueId = uid });
} }
@@ -34,8 +34,8 @@ public class IntegratedTest
return; return;
} }
var scanner = new AudioFileScanner(); AudioFileScanner scanner = new();
var reader = new AudioMetadataReader(); AudioMetadataReader reader = new();
string[] wavFiles = scanner.ScanDirectory(sourceDir, recursive: true) string[] wavFiles = scanner.ScanDirectory(sourceDir, recursive: true)
.Where(f => f.EndsWith(".wav", StringComparison.OrdinalIgnoreCase)) .Where(f => f.EndsWith(".wav", StringComparison.OrdinalIgnoreCase))
.ToArray(); .ToArray();
@@ -45,7 +45,7 @@ public class IntegratedTest
return; return;
} }
var metaList = wavFiles.Select(f => reader.ReadMetadata(new FileInfo(f))).ToList(); List<AudioFileMeta> metaList = wavFiles.Select(f => reader.ReadMetadata(new FileInfo(f))).ToList();
Database.InitializeDatabase(); Database.InitializeDatabase();
int insertedCount = Database.AddEntries(metaList); int insertedCount = Database.AddEntries(metaList);
@@ -54,9 +54,9 @@ public class IntegratedTest
{ {
Assert.Equal(wavFiles.Length, insertedCount); Assert.Equal(wavFiles.Length, insertedCount);
foreach (var meta in metaList) foreach (AudioFileMeta meta in metaList)
{ {
var retrieved = Database.GetEntryByUniqueId(meta.UniqueId); AudioFileMeta? retrieved = Database.GetEntryByUniqueId(meta.UniqueId);
Assert.NotNull(retrieved); Assert.NotNull(retrieved);
Assert.Equal(meta.Md5, retrieved!.Md5); Assert.Equal(meta.Md5, retrieved!.Md5);
+1 -1
View File
@@ -42,7 +42,7 @@ public class AudioFileScanner
return false; return false;
} }
var extension = Path.GetExtension(filePath).ToLowerInvariant(); string extension = Path.GetExtension(filePath).ToLowerInvariant();
return SupportedExtensions.Contains(extension); return SupportedExtensions.Contains(extension);
} }
} }
+22 -22
View File
@@ -26,7 +26,7 @@ public static class Database
/// </summary> /// </summary>
public static void InitializeDatabase(string databaseName = "default") public static void InitializeDatabase(string databaseName = "default")
{ {
using var connection = GetConnection(databaseName); using IDbConnection connection = GetConnection(databaseName);
connection.Open(); connection.Open();
const string sql = """ const string sql = """
@@ -131,7 +131,7 @@ public static class Database
{ {
try try
{ {
using var connection = GetConnection(); using IDbConnection connection = GetConnection();
connection.Open(); connection.Open();
const string sql = @" const string sql = @"
@@ -183,11 +183,11 @@ public static class Database
/// <returns>成功添加的记录数</returns> /// <returns>成功添加的记录数</returns>
public static int AddEntries(IEnumerable<AudioFileMeta> entries) public static int AddEntries(IEnumerable<AudioFileMeta> entries)
{ {
var count = 0; int count = 0;
using var connection = GetConnection(); using IDbConnection connection = GetConnection();
connection.Open(); connection.Open();
using var transaction = connection.BeginTransaction(); using IDbTransaction transaction = connection.BeginTransaction();
try try
{ {
const string sql = @" const string sql = @"
@@ -222,7 +222,7 @@ public static class Database
); );
"; ";
foreach (var entry in entries) foreach (AudioFileMeta entry in entries)
{ {
connection.Execute(sql, entry, transaction); connection.Execute(sql, entry, transaction);
count++; count++;
@@ -247,7 +247,7 @@ public static class Database
/// <returns>是否存在</returns> /// <returns>是否存在</returns>
public static bool EntryExists(string md5, string filePath) public static bool EntryExists(string md5, string filePath)
{ {
using var connection = GetConnection(); using IDbConnection connection = GetConnection();
connection.Open(); connection.Open();
const string sql = @" const string sql = @"
@@ -255,7 +255,7 @@ public static class Database
WHERE md5 = @Md5 OR path = @Path; WHERE md5 = @Md5 OR path = @Path;
"; ";
var count = connection.ExecuteScalar<int>(sql, new { Md5 = md5, Path = filePath }); int count = connection.ExecuteScalar<int>(sql, new { Md5 = md5, Path = filePath });
return count > 0; return count > 0;
} }
@@ -306,7 +306,7 @@ public static class Database
/// </summary> /// </summary>
public static AudioFileMeta? GetEntryById(int id) public static AudioFileMeta? GetEntryById(int id)
{ {
using var connection = GetConnection(); using IDbConnection connection = GetConnection();
connection.Open(); connection.Open();
const string sql = $"SELECT {DetailSelectColumns} FROM audio_files WHERE id = @Id;"; const string sql = $"SELECT {DetailSelectColumns} FROM audio_files WHERE id = @Id;";
@@ -319,7 +319,7 @@ public static class Database
/// </summary> /// </summary>
public static AudioFileMeta? GetEntryByUniqueId(string uniqueId) public static AudioFileMeta? GetEntryByUniqueId(string uniqueId)
{ {
using var connection = GetConnection(); using IDbConnection connection = GetConnection();
connection.Open(); connection.Open();
const string sql = $"SELECT {DetailSelectColumns} FROM audio_files WHERE unique_id = @UniqueId;"; const string sql = $"SELECT {DetailSelectColumns} FROM audio_files WHERE unique_id = @UniqueId;";
@@ -342,11 +342,11 @@ public static class Database
int limit = 100, int limit = 100,
int offset = 0) int offset = 0)
{ {
using var connection = GetConnection(); using IDbConnection connection = GetConnection();
connection.Open(); connection.Open();
var where = new List<string>(); List<string> where = new();
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
if (!string.IsNullOrWhiteSpace(searchText)) if (!string.IsNullOrWhiteSpace(searchText))
{ {
@@ -379,16 +379,16 @@ public static class Database
parameters.Add("@Category", category); parameters.Add("@Category", category);
} }
var whereClause = where.Count > 0 ? "WHERE " + string.Join(" AND ", where) : ""; string whereClause = where.Count > 0 ? "WHERE " + string.Join(" AND ", where) : "";
var orderBy = "ORDER BY date_added DESC"; string orderBy = "ORDER BY date_added DESC";
if (!string.IsNullOrWhiteSpace(sortBy) && AllowedSortColumns.Contains(sortBy)) if (!string.IsNullOrWhiteSpace(sortBy) && AllowedSortColumns.Contains(sortBy))
{ {
var dir = sortDescending ? "DESC" : "ASC"; string dir = sortDescending ? "DESC" : "ASC";
orderBy = $"ORDER BY [{sortBy}] {dir}"; orderBy = $"ORDER BY [{sortBy}] {dir}";
} }
var sql = $""" string sql = $"""
SELECT {ListSelectColumns} SELECT {ListSelectColumns}
FROM audio_files FROM audio_files
{whereClause} {whereClause}
@@ -421,11 +421,11 @@ public static class Database
int? channels = null, int? channels = null,
string? category = null) string? category = null)
{ {
using var connection = GetConnection(); using IDbConnection connection = GetConnection();
connection.Open(); connection.Open();
var where = new List<string>(); List<string> where = new();
var parameters = new DynamicParameters(); DynamicParameters parameters = new();
if (!string.IsNullOrWhiteSpace(searchText)) if (!string.IsNullOrWhiteSpace(searchText))
{ {
@@ -458,8 +458,8 @@ public static class Database
parameters.Add("@Category", category); parameters.Add("@Category", category);
} }
var whereClause = where.Count > 0 ? "WHERE " + string.Join(" AND ", where) : ""; string whereClause = where.Count > 0 ? "WHERE " + string.Join(" AND ", where) : "";
var sql = $"SELECT COUNT(*) FROM audio_files {whereClause};"; string sql = $"SELECT COUNT(*) FROM audio_files {whereClause};";
return connection.ExecuteScalar<int>(sql, parameters); return connection.ExecuteScalar<int>(sql, parameters);
} }