MQTTPipeLineTests test 중

This commit is contained in:
김형인
2025-06-10 01:09:36 +09:00
parent ac3645577a
commit 649a359ab4
14 changed files with 886 additions and 70 deletions

View File

@@ -223,7 +223,7 @@ namespace SQLite4Unity3d
/// var db = new SQLiteConnection(Application.persistentDataPath + "/myDatabase.db", true);
///
/// // 테이블 생성
/// db.CreateTable<Person>();
/// db.CreateTable<Person>();
/// </code>
/// </example>
public SQLiteConnection(string databasePath, bool storeDateTimeAsTicks = false)
@@ -438,7 +438,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 제네릭 타입으로 매핑 얻기
/// var mapping = db.GetMapping&lt;Person&gt;();
/// var mapping = db.GetMapping<Person>();
/// </code>
/// </example>
public TableMapping GetMapping<T>()
@@ -466,7 +466,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // Person 테이블 삭제
/// db.DropTable&lt;Person&gt;();
/// db.DropTable<Person>();
/// </code>
/// </example>
public int DropTable<T>()
@@ -490,10 +490,10 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // Person 클래스를 표현하는 테이블 생성
/// db.CreateTable&lt;Person&gt;();
/// db.CreateTable<Person>();
///
/// // 암시적 인덱스 생성 옵션 사용
/// db.CreateTable&lt;Person&gt;(CreateFlags.ImplicitIndex);
/// db.CreateTable<Person>(CreateFlags.ImplicitIndex);
/// </code>
/// </example>
public int CreateTable<T>(CreateFlags createFlags = CreateFlags.None)
@@ -675,7 +675,7 @@ namespace SQLite4Unity3d
/// <summary>
/// 지정된 객체 속성에 대한 인덱스를 생성합니다.
/// 예시: CreateIndex&lt;Client&gt;(c => c.Name);
/// 예시: CreateIndex<Client>(c => c.Name);
/// </summary>
/// <typeparam name="T">데이터베이스 테이블에 반영할 타입.</typeparam>
/// <param name="property">인덱싱할 속성</param>
@@ -683,7 +683,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 람다 식을 사용하여 속성에 대한 인덱스 생성
/// db.CreateIndex&lt;Person&gt;(p => p.Email, true);
/// db.CreateIndex<Person>(p => p.Email, true);
/// </code>
/// </example>
public void CreateIndex<T>(Expression<Func<T, object>> property, bool unique = false)
@@ -821,7 +821,7 @@ namespace SQLite4Unity3d
/// <code>
/// // 파라미터가 있는 명령 생성
/// var cmd = db.CreateCommand("SELECT * FROM Person WHERE Id = ?", 1);
/// var person = cmd.ExecuteQuery&lt;Person&gt;().FirstOrDefault();
/// var person = cmd.ExecuteQuery<Person>().FirstOrDefault();
/// </code>
/// </example>
public SQLiteCommand CreateCommand(string cmdText, params object[] ps)
@@ -897,8 +897,8 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 스칼라 값 가져오기
/// int count = db.ExecuteScalar&lt;int&gt;("SELECT COUNT(*) FROM Person");
/// string name = db.ExecuteScalar&lt;string&gt;("SELECT Name FROM Person WHERE Id = ?", 1);
/// int count = db.ExecuteScalar<int>("SELECT COUNT(*) FROM Person");
/// string name = db.ExecuteScalar<string>("SELECT Name FROM Person WHERE Id = ?", 1);
/// </code>
/// </example>
public T ExecuteScalar<T>(string query, params object[] args)
@@ -944,7 +944,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 조건에 맞는 모든 Person 객체 조회
/// var adults = db.Query&lt;Person&gt;("SELECT * FROM Person WHERE Age >= ?", 18);
/// var adults = db.Query<Person>("SELECT * FROM Person WHERE Age >= ?", 18);
/// foreach (var person in adults) {
/// Console.WriteLine($"성인: {person.Name}, {person.Age}세");
/// }
@@ -975,7 +975,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 대용량 데이터를 지연 로딩으로 처리
/// var query = db.DeferredQuery&lt;Person&gt;("SELECT * FROM Person");
/// var query = db.DeferredQuery<Person>("SELECT * FROM Person");
/// using (var enumerator = query.GetEnumerator()) {
/// while (enumerator.MoveNext()) {
/// var person = enumerator.Current;
@@ -1061,7 +1061,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // LINQ를 사용하여 데이터 쿼리하기
/// var query = db.Table&lt;Person&gt;()
/// var query = db.Table<Person>()
/// .Where(p => p.Age > 18)
/// .OrderBy(p => p.Name);
///
@@ -1091,7 +1091,7 @@ namespace SQLite4Unity3d
/// <code>
/// // 기본 키로 Person 객체 가져오기
/// try {
/// var person = db.Get&lt;Person&gt;(1);
/// var person = db.Get<Person>(1);
/// Console.WriteLine($"이름: {person.Name}");
/// } catch (Exception) {
/// Console.WriteLine("해당 ID의 Person을 찾을 수 없습니다");
@@ -1118,7 +1118,7 @@ namespace SQLite4Unity3d
/// <code>
/// // 조건식으로 Person 객체 가져오기
/// try {
/// var person = db.Get&lt;Person&gt;(p => p.Email == "test@example.com");
/// var person = db.Get<Person>(p => p.Email == "test@example.com");
/// Console.WriteLine($"이름: {person.Name}");
/// } catch (Exception) {
/// Console.WriteLine("조건에 맞는 Person을 찾을 수 없습니다");
@@ -1145,7 +1145,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 기본 키로 Person 객체 찾기 (없으면 null 반환)
/// var person = db.Find&lt;Person&gt;(1);
/// var person = db.Find<Person>(1);
/// if (person != null) {
/// Console.WriteLine($"찾았습니다: {person.Name}");
/// } else {
@@ -1203,7 +1203,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 조건식으로 Person 객체 찾기 (없으면 null 반환)
/// var person = db.Find&lt;Person&gt;(p => p.Email == "test@example.com");
/// var person = db.Find<Person>(p => p.Email == "test@example.com");
/// if (person != null) {
/// Console.WriteLine($"찾았습니다: {person.Name}");
/// } else {
@@ -1616,10 +1616,10 @@ namespace SQLite4Unity3d
/// // RunInDatabaseLock을 사용한 스레드 안전한 데이터베이스 접근
/// db.RunInDatabaseLock(() => {
/// // 이 블록 내의 작업은 다른 스레드에서 동일한 데이터베이스에 접근할 수 없습니다.
/// var count = db.ExecuteScalar&lt;int&gt;("SELECT COUNT(*) FROM Person");
/// var count = db.ExecuteScalar<int>("SELECT COUNT(*) FROM Person");
///
/// if (count > 0) {
/// var people = db.Query&lt;Person&gt;("SELECT * FROM Person");
/// var people = db.Query<Person>("SELECT * FROM Person");
/// foreach (var person in people) {
/// // 안전하게 데이터 처리
/// ProcessPerson(person);
@@ -1648,7 +1648,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 객체 목록을 한 번에 삽입
/// var people = new List&lt;Person&gt;
/// var people = new List<Person>
/// {
/// new Person { Name = "홍길동", Age = 30 },
/// new Person { Name = "김철수", Age = 25 },
@@ -1687,7 +1687,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 여러 객체 한 번에 삽입 (충돌 무시 옵션 사용)
/// var people = new List&lt;Person&gt;
/// var people = new List<Person>
/// {
/// new Person { Id = 1, Name = "홍길동", Age = 30 },
/// new Person { Id = 2, Name = "김철수", Age = 25 },
@@ -1726,7 +1726,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 동적 타입으로 여러 객체 한 번에 삽입
/// var people = new List&lt;object&gt;
/// var people = new List<object>
/// {
/// new Person { Name = "홍길동", Age = 30 },
/// new Person { Name = "김철수", Age = 25 }
@@ -1798,7 +1798,7 @@ namespace SQLite4Unity3d
/// db.InsertOrReplace(new Person { Id = 1, Name = "홍길동(수정)", Age = 31 });
///
/// // 값이 변경된 객체를 교체 삽입하는 방식으로 업데이트할 수도 있음
/// var person = db.Get&lt;Person&gt;(1);
/// var person = db.Get<Person>(1);
/// person.Age += 1;
/// db.InsertOrReplace(person);
/// </code>
@@ -2027,7 +2027,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 데이터베이스에서 객체 검색
/// var person = db.Get&lt;Person&gt;(1);
/// var person = db.Get<Person>(1);
///
/// // 객체 속성 변경
/// person.Name = "홍길동(수정됨)";
@@ -2127,7 +2127,7 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 여러 객체 한 번에 업데이트
/// var people = db.Query&lt;Person&gt;("SELECT * FROM Person WHERE Age < 30");
/// var people = db.Query<Person>("SELECT * FROM Person WHERE Age < 30");
/// foreach (var person in people) {
/// person.Age++;
/// }
@@ -2161,14 +2161,14 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 데이터베이스에서 객체 검색
/// var person = db.Get&lt;Person&gt;(1);
/// var person = db.Get<Person>(1);
///
/// // 객체 삭제
/// int rowsAffected = db.Delete(person);
/// Console.WriteLine($"삭제된 행 수: {rowsAffected}");
///
/// // 또는 직접 ID로 삭제
/// rowsAffected = db.Delete&lt;Person&gt;(2);
/// rowsAffected = db.Delete<Person>(2);
/// </code>
/// </example>
public int Delete(object objectToDelete)
@@ -2198,13 +2198,13 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 기본 키로 직접 객체 삭제
/// int rowsDeleted = db.Delete&lt;Person&gt;(1);
/// int rowsDeleted = db.Delete<Person>(1);
/// Console.WriteLine($"ID가 1인 Person 객체 {rowsDeleted}개 삭제됨");
///
/// // 여러 ID를 차례로 삭제
/// int[] idsToDelete = { 2, 3, 4 };
/// foreach (int id in idsToDelete) {
/// db.Delete&lt;Person&gt;(id);
/// db.Delete<Person>(id);
/// }
/// </code>
/// </example>
@@ -2237,11 +2237,11 @@ namespace SQLite4Unity3d
/// db.BeginTransaction();
/// try {
/// // 삭제 전 확인을 위한 카운트
/// int beforeCount = db.ExecuteScalar&lt;int&gt;("SELECT COUNT(*) FROM Person");
/// int beforeCount = db.ExecuteScalar<int>("SELECT COUNT(*) FROM Person");
/// Console.WriteLine($"삭제 전 데이터 수: {beforeCount}");
///
/// // 모든 Person 데이터 삭제
/// int deleted = db.DeleteAll&lt;Person&gt;();
/// int deleted = db.DeleteAll<Person>();
///
/// Console.WriteLine($"삭제된 데이터 수: {deleted}");
/// db.Commit();
@@ -2272,7 +2272,7 @@ namespace SQLite4Unity3d
/// using (var db = new SQLiteConnection("database.db"))
/// {
/// // 데이터베이스 작업 수행
/// var people = db.Query&lt;Person&gt;("SELECT * FROM Person");
/// var people = db.Query<Person>("SELECT * FROM Person");
///
/// // using 블록이 끝나면 자동으로 db.Dispose() 호출됨
/// }
@@ -2282,7 +2282,7 @@ namespace SQLite4Unity3d
/// try
/// {
/// // 작업 수행
/// connection.CreateTable&lt;Person&gt;();
/// connection.CreateTable<Person>();
/// }
/// finally
/// {
@@ -2312,7 +2312,7 @@ namespace SQLite4Unity3d
/// // 또는 using 문을 사용하여 자동으로 닫기
/// using (var db = new SQLiteConnection("database.db")) {
/// // 데이터베이스 작업 수행
/// var count = db.ExecuteScalar&lt;int&gt;("SELECT COUNT(*) FROM Person");
/// var count = db.ExecuteScalar<int>("SELECT COUNT(*) FROM Person");
/// Console.WriteLine($"Person 테이블의 행 수: {count}");
///
/// // using 블록이 끝나면 자동으로 db.Dispose()가 호출되어 연결이 닫힘
@@ -3454,11 +3454,11 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 조건식으로 데이터 필터링
/// var adults = db.Table&lt;Person&gt;()
/// var adults = db.Table<Person>()
/// .Where(p => p.Age >= 18);
///
/// // 여러 조건 체이닝
/// var adultMales = db.Table&lt;Person&gt;()
/// var adultMales = db.Table<Person>()
/// .Where(p => p.Age >= 18)
/// .Where(p => p.Gender == "남성");
///
@@ -3519,10 +3519,10 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 나이순으로 정렬
/// var peopleByAge = db.Table&lt;Person&gt;().OrderBy(p => p.Age);
/// var peopleByAge = db.Table<Person>().OrderBy(p => p.Age);
///
/// // 이름순으로 정렬
/// var peopleByName = db.Table&lt;Person&gt;().OrderBy(p => p.Name);
/// var peopleByName = db.Table<Person>().OrderBy(p => p.Name);
///
/// foreach (var person in peopleByAge) {
/// Console.WriteLine($"{person.Name}, {person.Age}세");
@@ -3543,10 +3543,10 @@ namespace SQLite4Unity3d
/// <example>
/// <code>
/// // 나이 내림차순으로 정렬
/// var olderFirst = db.Table&lt;Person&gt;().OrderByDescending(p => p.Age);
/// var olderFirst = db.Table<Person>().OrderByDescending(p => p.Age);
///
/// // 이름 내림차순으로 정렬
/// var reverseAlpha = db.Table&lt;Person&gt;().OrderByDescending(p => p.Name);
/// var reverseAlpha = db.Table<Person>().OrderByDescending(p => p.Name);
///
/// foreach (var person in olderFirst) {
/// Console.WriteLine($"{person.Name}, {person.Age}세");