Skip to content

Commit f4cebf6

Browse files
committed
PHP-172 - php_driver_value_hash hashes IS_TRUE and IS_FALSE to 1 in PHP7
1 parent 4a34fc0 commit f4cebf6

File tree

3 files changed

+64
-51
lines changed

3 files changed

+64
-51
lines changed

ext/util/hash.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ php_driver_value_hash(zval* zvalue TSRMLS_DC) {
4747

4848
#if PHP_MAJOR_VERSION >= 7
4949
case IS_TRUE: return 1;
50-
case IS_FALSE: return 1;
50+
case IS_FALSE: return 0;
5151
#else
5252
case IS_BOOL: return Z_BVAL_P(zvalue);
5353
#endif

tests/unit/Cassandra/MapTest.php

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -97,39 +97,45 @@ public function testSupportsKeyBasedAccess()
9797
/**
9898
* @dataProvider scalarTypes
9999
*/
100-
public function testScalarKeys($keyType, $keyValue, $keyValueCopy)
100+
public function testScalarKeys($keyType, $values)
101101
{
102102
$map = Type::map($keyType, Type::varchar())->create();
103-
$map->set($keyValue, "value");
104-
$this->assertEquals(1, count($map));
105-
$this->assertEquals($map->get($keyValue), "value");
106-
$this->assertEquals($map->get($keyValueCopy), "value");
107-
$this->assertTrue($map->has($keyValue));
108-
$this->assertTrue($map->has($keyValueCopy));
109-
$map->remove($keyValue);
103+
foreach ($values as $index => $keyValue) {
104+
$map->set($keyValue, "value$index");
105+
}
106+
$this->assertEquals(count($values), count($map));
107+
108+
foreach ($values as $index => $keyValue) {
109+
$this->assertTrue($map->has($keyValue));
110+
$this->assertEquals($map->get($keyValue), "value$index");
111+
}
112+
113+
foreach ($values as $keyValue) {
114+
$map->remove($keyValue);
115+
}
110116
$this->assertEquals(0, count($map));
111117
}
112118

113119
public function scalarTypes()
114120
{
115121
return array(
116-
array(Type::ascii(), "ascii", "ascii"),
117-
array(Type::bigint(), new Bigint("9223372036854775807"), new Bigint("9223372036854775807")),
118-
array(Type::blob(), new Blob("blob"), new Blob("blob")),
119-
array(Type::boolean(), true, true),
120-
array(Type::counter(), new Bigint(123), new Bigint(123)),
121-
array(Type::decimal(), new Decimal("3.14159265359"), new Decimal("3.14159265359")),
122-
array(Type::double(), 3.14159, 3.14159),
123-
array(Type::float(), new Float(3.14159), new Float(3.14159)),
124-
array(Type::inet(), new Inet("127.0.0.1"), new Inet("127.0.0.1")),
125-
array(Type::int(), 123, 123),
126-
array(Type::text(), "text", "text"),
127-
array(Type::timestamp(), new Timestamp(123), new Timestamp(123)),
128-
array(Type::timeuuid(), new Timeuuid(0), new Timeuuid(0)),
129-
array(Type::uuid(), new Uuid("03398c99-c635-4fad-b30a-3b2c49f785c2"), new Uuid("03398c99-c635-4fad-b30a-3b2c49f785c2")),
130-
array(Type::varchar(), "varchar", "varchar"),
131-
array(Type::varint(), new Varint("9223372036854775808"), new Varint("9223372036854775808")),
132-
array(Type::duration(), new Duration(1, 2, 3), new Duration(1, 2, 3))
122+
array(Type::ascii(), array("ascii")),
123+
array(Type::bigint(), array(new Bigint("9223372036854775807"))),
124+
array(Type::blob(), array(new Blob("blob"))),
125+
array(Type::boolean(), array(true, false)),
126+
array(Type::counter(), array(new Bigint(123))),
127+
array(Type::decimal(), array(new Decimal("3.14159265359"))),
128+
array(Type::double(), array(3.14159)),
129+
array(Type::float(), array(new Float(3.14159))),
130+
array(Type::inet(), array(new Inet("127.0.0.1"))),
131+
array(Type::int(), array(123)),
132+
array(Type::text(), array("text")),
133+
array(Type::timestamp(), array(new Timestamp(123))),
134+
array(Type::timeuuid(), array(new Timeuuid(0))),
135+
array(Type::uuid(), array(new Uuid("03398c99-c635-4fad-b30a-3b2c49f785c2"))),
136+
array(Type::varchar(), array("varchar")),
137+
array(Type::varint(), array(new Varint("9223372036854775808"))),
138+
array(Type::duration(), array(new Duration(1, 2, 3)))
133139
);
134140
}
135141

tests/unit/Cassandra/SetTest.php

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -64,37 +64,44 @@ public function testContainsUniqueValues()
6464
/**
6565
* @dataProvider scalarTypes
6666
*/
67-
public function testScalarKeys($type, $value, $valueCopy)
67+
public function testScalarKeys($type, $values)
6868
{
69-
$map = Type::set($type)->create();
70-
$map->add($value);
71-
$this->assertEquals(1, count($map));
72-
$this->assertTrue($map->has($value));
73-
$this->assertTrue($map->has($valueCopy));
74-
$map->remove($value);
75-
$this->assertEquals(0, count($map));
69+
$set = Type::set($type)->create();
70+
foreach($values as $value) {
71+
$set->add($value);
72+
}
73+
$this->assertEquals(count($values), count($set));
74+
75+
foreach($values as $value) {
76+
$this->assertTrue($set->has($value));
77+
}
78+
79+
foreach($values as $value) {
80+
$set->remove($value);
81+
}
82+
$this->assertEquals(0, count($set));
7683
}
7784

7885
public function scalarTypes()
7986
{
8087
return array(
81-
array(Type::ascii(), "ascii", "ascii"),
82-
array(Type::bigint(), new Bigint("9223372036854775807"), new Bigint("9223372036854775807")),
83-
array(Type::blob(), new Blob("blob"), new Blob("blob")),
84-
array(Type::boolean(), true, true),
85-
array(Type::counter(), new Bigint(123), new Bigint(123)),
86-
array(Type::decimal(), new Decimal("3.14159265359"), new Decimal("3.14159265359")),
87-
array(Type::double(), 3.14159, 3.14159),
88-
array(Type::float(), new Float(3.14159), new Float(3.14159)),
89-
array(Type::inet(), new Inet("127.0.0.1"), new Inet("127.0.0.1")),
90-
array(Type::int(), 123, 123),
91-
array(Type::text(), "text", "text"),
92-
array(Type::timestamp(), new Timestamp(123), new Timestamp(123)),
93-
array(Type::timeuuid(), new Timeuuid(0), new Timeuuid(0)),
94-
array(Type::uuid(), new Uuid("03398c99-c635-4fad-b30a-3b2c49f785c2"), new Uuid("03398c99-c635-4fad-b30a-3b2c49f785c2")),
95-
array(Type::varchar(), "varchar", "varchar"),
96-
array(Type::varint(), new Varint("9223372036854775808"), new Varint("9223372036854775808")),
97-
array(Type::duration(), new Duration(1, 2, 3), new Duration(1, 2, 3))
88+
array(Type::ascii(), array("ascii")),
89+
array(Type::bigint(), array(new Bigint("9223372036854775807"))),
90+
array(Type::blob(), array(new Blob("blob"))),
91+
array(Type::boolean(), array(true, false)),
92+
array(Type::counter(), array(new Bigint(123))),
93+
array(Type::decimal(), array(new Decimal("3.14159265359"))),
94+
array(Type::double(), array(3.14159)),
95+
array(Type::float(), array(new Float(3.14159))),
96+
array(Type::inet(), array(new Inet("127.0.0.1"))),
97+
array(Type::int(), array(123)),
98+
array(Type::text(), array("text")),
99+
array(Type::timestamp(), array(new Timestamp(123))),
100+
array(Type::timeuuid(), array(new Timeuuid(0))),
101+
array(Type::uuid(), array(new Uuid("03398c99-c635-4fad-b30a-3b2c49f785c2"))),
102+
array(Type::varchar(), array("varchar")),
103+
array(Type::varint(), array(new Varint("9223372036854775808"))),
104+
array(Type::duration(), array(new Duration(1, 2, 3)))
98105
);
99106
}
100107

0 commit comments

Comments
 (0)