From 3e59500c8f9727f10f84ca242247b81744190542 Mon Sep 17 00:00:00 2001
From: sunkaixuan <610262374@qq.com>
Date: Sun, 11 Dec 2022 16:17:17 +0800
Subject: [PATCH] Add unit test
---
.../SqlServerTest/SqlServerTest.csproj | 1 +
Src/Asp.Net/SqlServerTest/UnitTest/Main.cs | 1 +
Src/Asp.Net/SqlServerTest/UnitTest/UTran3.cs | 148 ++++++++++++++++++
3 files changed, 150 insertions(+)
create mode 100644 Src/Asp.Net/SqlServerTest/UnitTest/UTran3.cs
diff --git a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj
index 51928bfab..bf9f9d4e2 100644
--- a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj
+++ b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj
@@ -203,6 +203,7 @@
+
diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs
index faa118585..222b2dacb 100644
--- a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs
+++ b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs
@@ -119,6 +119,7 @@ namespace OrmTest
Queryable2();
QueryableAsync();
AopTest();
+ UTran3.Init();
//Thread();
//Thread2();
//Thread3();
diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UTran3.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UTran3.cs
new file mode 100644
index 000000000..2364c3972
--- /dev/null
+++ b/Src/Asp.Net/SqlServerTest/UnitTest/UTran3.cs
@@ -0,0 +1,148 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OrmTest
+{
+ public class UTran3
+ {
+ public static void Init()
+ {
+ AdoTran();
+ Tran();
+ RollTest().GetAwaiter().GetResult();
+ Tran2();
+ }
+
+ private static void AdoTran()
+ {
+ var db = NewUnitTest.Db;
+ db.CodeFirst.InitTables();
+ db.DbMaintenance.TruncateTable();
+ db.Insertable(new UTran121()).ExecuteCommand();
+ for (int i = 0; i < 1000; i++)
+ {
+ AdoTest(i).GetAwaiter().GetResult();
+ }
+ var id = db.Queryable().ToList().First().ID;
+ if (id != 2000)
+ {
+ throw new Exception("unit error");
+ }
+
+ }
+
+ public static async Task AdoTest(int i)
+ {
+ var db = NewUnitTest.Db;
+ await db.Ado.BeginTranAsync();
+
+ await db.Updateable()
+ .SetColumns(it => it.ID == it.ID+1)
+ .Where(it=>true)
+ .ExecuteCommandAsync();
+
+ await db.Updateable()
+ .SetColumns(it => it.ID == it.ID + 1)
+ .Where(it => true)
+ .ExecuteCommandAsync();
+
+ await db.Ado.CommitTranAsync();
+ Console.WriteLine("ok"+i);
+ }
+
+
+ private static void Tran2()
+ {
+ var db = NewUnitTest.Db;
+ db.CodeFirst.InitTables();
+ db.DbMaintenance.TruncateTable();
+ db.Insertable(new UTran121()).ExecuteCommand();
+ for (int i = 0; i < 1000; i++)
+ {
+ Test(i);
+ }
+
+ }
+
+
+ private static void Tran()
+ {
+ var db = NewUnitTest.Db;
+ db.CodeFirst.InitTables();
+ db.DbMaintenance.TruncateTable();
+ db.Insertable(new UTran121()).ExecuteCommand();
+ for (int i = 0; i < 1000; i++)
+ {
+ Test(i).GetAwaiter().GetResult();
+ }
+ var id = db.Queryable().ToList().First().ID;
+ if (id != 2000)
+ {
+ throw new Exception("unit error");
+ }
+ }
+
+ public static async Task Test(int i)
+ {
+ var db = NewUnitTest.Db;
+ await db.BeginTranAsync();
+
+ await db.Updateable()
+ .SetColumns(it => it.ID == it.ID + 1)
+ .Where(it => true)
+ .ExecuteCommandAsync();
+
+ await db.Updateable()
+ .SetColumns(it => it.ID == it.ID + 1)
+ .Where(it => true)
+ .ExecuteCommandAsync();
+
+ await db.CommitTranAsync();
+ Console.WriteLine("ok" + i);
+ }
+
+ public static async Task RollTest()
+ {
+ int i = 0;
+ var db = NewUnitTest.Db;
+ db.CodeFirst.InitTables();
+ db.DbMaintenance.TruncateTable();
+ db.Insertable(new UTran121() { ID=100}).ExecuteCommand();
+
+ try
+ {
+ Console.WriteLine( db.Queryable().First().ID);
+
+ await db.BeginTranAsync();
+
+ await db.Updateable()
+ .SetColumns(it => it.ID == it.ID + 1)
+ .Where(it => true)
+ .ExecuteCommandAsync();
+
+ Console.WriteLine(db.Queryable().First().ID);
+
+ throw new Exception("");
+
+ await db.CommitTranAsync();
+ }
+ catch (Exception ex)
+ {
+ await db.RollbackTranAsync();
+ if (db.Queryable().First().ID != 100)
+ {
+ throw new Exception("unit error");
+ }
+ }
+ Console.WriteLine("ok" + i);
+ }
+ public class UTran121
+ {
+ public int ID { get; set; }
+ }
+ }
+}