From 39ff3f9993636f08d2320c2afd06de34e1fab9d2 Mon Sep 17 00:00:00 2001
From: David Anderson <dvander@alliedmods.net>
Date: Thu, 5 Jun 2014 01:05:23 -0700
Subject: [PATCH] Add a rollback test.

---
 .gitignore                   |  1 +
 plugins/testsuite/sqltest.sp | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/.gitignore b/.gitignore
index 32e1b53b..196ad992 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,3 +33,4 @@ obj-*/
 *~
 *.rej
 *.orig
+*.smx
diff --git a/plugins/testsuite/sqltest.sp b/plugins/testsuite/sqltest.sp
index 758cee90..0f6996b7 100644
--- a/plugins/testsuite/sqltest.sp
+++ b/plugins/testsuite/sqltest.sp
@@ -251,6 +251,17 @@ public Txn_Test2_OnFailure(Handle:db, any:data, numQueries, const String:error[]
 	AssertEq("failIndex", failIndex, 1);
 }
 
+public Txn_Test3_OnSuccess(Handle:db, any:data, numQueries, Handle:results[], any:queryData[])
+{
+	SetTestContext("Transaction Test 3");
+	AssertEq("data", data, 0);
+	AssertEq("numQueries", numQueries, 1);
+	AssertEq("queryData[0]", queryData[0], 0);
+	AssertTrue("HasResultSet(0)", SQL_HasResultSet(results[0]));
+	AssertTrue("FetchRow(0)", SQL_FetchRow(results[0]));
+	AssertEq("FetchInt(0, 0)", SQL_FetchInt(results[0], 0), 5);
+}
+
 public Action:Command_TestTxn(args)
 {
 	new String:error[256];
@@ -292,6 +303,15 @@ public Action:Command_TestTxn(args)
 		1000
 	);
 
+	// Make sure the transaction was rolled back - COUNT should be 5.
+	txn = SQL_CreateTransaction();
+	SQL_AddQuery(txn, "SELECT COUNT(id) FROM egg");
+	SQL_ExecuteTransaction(
+		db,
+		txn,
+		Txn_Test3_OnSuccess
+	);
+
 	CloseHandle(db);
 	return Plugin_Handled;
 }