Skip to content

Commit

Permalink
Add more tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
terabytesoftw committed Oct 24, 2023
1 parent 5dd35ef commit 3497c14
Showing 1 changed file with 121 additions and 11 deletions.
132 changes: 121 additions & 11 deletions tests/framework/db/mssql/type/BooleanTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,49 +40,159 @@ public function testBoolean(): void
$column = $db->getTableSchema($tableName)->getColumn('bool_col');
$this->assertSame('boolean', $column->phpType);

// test value 0
$db->createCommand()->insert($tableName, ['bool_col' => 0])->execute();
// test value `false`
$db->createCommand()->insert($tableName, ['bool_col' => false])->execute();
$boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
$this->assertEquals(0, $boolValue);

// test php typecast
$phpTypeCast = $column->phpTypecast($boolValue);
$this->assertFalse($phpTypeCast);

// test value 1
$db->createCommand()->insert($tableName, ['bool_col' => 1])->execute();
// test value `true`
$db->createCommand()->insert($tableName, ['bool_col' => true])->execute();
$boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 2")->queryScalar();
$this->assertEquals(1, $boolValue);

// test php typecast
$phpTypeCast = $column->phpTypecast($boolValue);
$this->assertTrue($phpTypeCast);
}

// test value `false`
$db->createCommand()->insert($tableName, ['bool_col' => false])->execute();
$boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 3")->queryScalar();
public function testBooleanWithValueInteger(): void
{
$db = $this->getConnection(true);
$schema = $db->getSchema();
$tableName = '{{%boolean}}';

if ($db->getTableSchema($tableName)) {
$db->createCommand()->dropTable($tableName)->execute();
}

$db->createCommand()->createTable(
$tableName,
[
'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
]
)->execute();

// test type
$column = $db->getTableSchema($tableName)->getColumn('bool_col');
$this->assertSame('boolean', $column->phpType);

// test value 0
$db->createCommand()->insert($tableName, ['bool_col' => 0])->execute();
$boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
$this->assertEquals(0, $boolValue);

// test php typecast
$phpTypeCast = $column->phpTypecast($boolValue);
$this->assertFalse($phpTypeCast);

// test value `true`
$db->createCommand()->insert($tableName, ['bool_col' => true])->execute();
$boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 4")->queryScalar();
// test value 1
$db->createCommand()->insert($tableName, ['bool_col' => 1])->execute();
$boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 2")->queryScalar();
$this->assertEquals(1, $boolValue);

// test php typecast
$phpTypeCast = $column->phpTypecast($boolValue);
$this->assertTrue($phpTypeCast);
}

public function testBooleanValueNegative(): void
{
$db = $this->getConnection(true);
$schema = $db->getSchema();
$tableName = '{{%boolean}}';

if ($db->getTableSchema($tableName)) {
$db->createCommand()->dropTable($tableName)->execute();
}

$db->createCommand()->createTable(
$tableName,
[
'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
]
)->execute();

// test type
$column = $db->getTableSchema($tableName)->getColumn('bool_col');
$this->assertSame('boolean', $column->phpType);

// test value 2
$db->createCommand()->insert($tableName, ['bool_col' => -1])->execute();
$boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
$this->assertEquals(1, $boolValue);

// test php typecast
$phpTypeCast = $column->phpTypecast($boolValue);
$this->assertTrue($phpTypeCast);
}

public function testBooleanWithValueNull(): void
{
$db = $this->getConnection(true);
$schema = $db->getSchema();
$tableName = '{{%boolean}}';

if ($db->getTableSchema($tableName)) {
$db->createCommand()->dropTable($tableName)->execute();
}

$db->createCommand()->createTable(
$tableName,
[
'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
]
)->execute();

// test type
$column = $db->getTableSchema($tableName)->getColumn('bool_col');
$this->assertSame('boolean', $column->phpType);

// test value `null`
$db->createCommand()->insert($tableName, ['bool_col' => null])->execute();
$boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 5")->queryScalar();
$boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
$this->assertNull($boolValue);

// test php typecast
$phpTypeCast = $column->phpTypecast($boolValue);
$this->assertNull($phpTypeCast);
}

public function testBooleanWithValueOverflow(): void
{
$db = $this->getConnection(true);
$schema = $db->getSchema();
$tableName = '{{%boolean}}';

if ($db->getTableSchema($tableName)) {
$db->createCommand()->dropTable($tableName)->execute();
}

$db->createCommand()->createTable(
$tableName,
[
'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
'bool_col' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
]
)->execute();

// test type
$column = $db->getTableSchema($tableName)->getColumn('bool_col');
$this->assertSame('boolean', $column->phpType);

// test value 2
$db->createCommand()->insert($tableName, ['bool_col' => 2])->execute();
$boolValue = $db->createCommand("SELECT bool_col FROM $tableName WHERE id = 1")->queryScalar();
$this->assertEquals(1, $boolValue);

// test php typecast
$phpTypeCast = $column->phpTypecast($boolValue);
$this->assertTrue($phpTypeCast);
}
}

0 comments on commit 3497c14

Please sign in to comment.