package mysql

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestParseSQLStatements(t *testing.T) {
	// Test with simple SQL
	simpleSQL := `
		CREATE TABLE test1 (id INT);
		CREATE TABLE test2 (name VARCHAR(255));
	`

	statements := parseSQLStatements(simpleSQL)
	assert.Len(t, statements, 2)
	assert.Contains(t, statements[0], "CREATE TABLE test1")
	assert.Contains(t, statements[1], "CREATE TABLE test2")
}

func TestParseSQLStatements_WithComments(t *testing.T) {
	sqlWithComments := `
		-- This is a comment
		CREATE TABLE test1 (
			id INT, -- inline comment
			name VARCHAR(255)
		);
		
		/* Multi-line
		   comment */
		CREATE TABLE test2 (id INT);
	`

	statements := parseSQLStatements(sqlWithComments)
	assert.Len(t, statements, 2)

	// Comments should be removed
	for _, stmt := range statements {
		assert.NotContains(t, stmt, "--")
		assert.NotContains(t, stmt, "/*")
		assert.NotContains(t, stmt, "*/")
	}
}

func TestParseSQLStatements_WithQuotes(t *testing.T) {
	sqlWithQuotes := `
		CREATE TABLE test (
			message VARCHAR(255) DEFAULT 'Hello; World'
		);
		INSERT INTO test VALUES ("Another; Value");
	`

	statements := parseSQLStatements(sqlWithQuotes)
	assert.Len(t, statements, 2)
	assert.Contains(t, statements[0], "CREATE TABLE")
	assert.Contains(t, statements[1], "INSERT INTO")
}
