Commit:    ed793b2a3f857fd49c0c1b036062140da5b3e674
Author:    Matt Ficken <mattfic...@php.net>         Mon, 6 Aug 2012 14:07:42 
+0200
Committer: Anatoliy Belsky <a...@php.net>      Mon, 6 Aug 2012 14:07:42 +0200
Parents:   a239658b9ed06008ca0cbb69c4d85fdfa506c01c
Branches:  PHP-5.3 PHP-5.4 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=ed793b2a3f857fd49c0c1b036062140da5b3e674

Log:
Added the intl tests extracted from Symfony. These are making the intl ext 
crash with ICU at least 4.6, but probably with earlier versions too.

Changed paths:
  A  ext/intl/tests/symfony_format_type_int32_intl1.phpt
  A  ext/intl/tests/symfony_format_type_int32_intl2.phpt
  A  ext/intl/tests/symfony_format_type_int32_intl3.phpt
  A  ext/intl/tests/symfony_format_type_int32_intl4.phpt
  A  ext/intl/tests/symfony_format_type_int32_intl5.phpt
  A  ext/intl/tests/symfony_format_type_int32_intl6.phpt
  A  ext/intl/tests/symfony_format_type_int32_intl7.phpt

diff --git a/ext/intl/tests/symfony_format_type_int32_intl1.phpt 
b/ext/intl/tests/symfony_format_type_int32_intl1.phpt
new file mode 100644
index 0000000..2867b35
--- /dev/null
+++ b/ext/intl/tests/symfony_format_type_int32_intl1.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Symfony StubNumberFormatterTest#testFormatTypeInt32Intl #1
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+
+// port of Symfony's 
Symfony\Component\Locale\Tests\Stub\StubNumberFormatterTest#testFormatTypeInt32Intl
+
+
+// Crashes on Windows
+// Windows note: the popup '...program has stopped working'(AEDebug Popup)
+//    doesn't always show if you're rapidly running this test repeatedly. 
+//    regardless of that, the test always crashes every time.
+//    (it will show up the first time, or if you wait a while before running 
it again.)
+//    (the popup may also be disabled, which can be done with a registry 
setting.)
+//    you can confirm it crashed by checking the exit code OR
+//    the message this test prints at the very end (expected output for pass).
+// 
+// Get Exit Code
+//  Linux: echo $?
+//  Windows: echo %ErrorLevel%
+
+
+
+
+
+// PHP Unit's code to unserialize data passed as args to 
#testFormatTypeInt32Intl
+$unit_test_args = 
unserialize('a:3:{i:0;O:15:"NumberFormatter":0:{}i:1;i:1;i:2;s:1:"1";}');
+
+var_dump($unit_test_args);
+
+// execute the code from #testFormatTypeInt32Intl
+$unit_test_args[0]->format($unit_test_args[1], \NumberFormatter::TYPE_INT32);
+
+echo "== didn't crash ==".PHP_EOL;
+
+?>
+--EXPECT--
+array(3) {
+  [0]=>
+  object(NumberFormatter)#1 (0) {
+  }
+  [1]=>
+  int(1)
+  [2]=>
+  string(1) "1"
+}
+== didn't crash ==
diff --git a/ext/intl/tests/symfony_format_type_int32_intl2.phpt 
b/ext/intl/tests/symfony_format_type_int32_intl2.phpt
new file mode 100644
index 0000000..6a65a0a
--- /dev/null
+++ b/ext/intl/tests/symfony_format_type_int32_intl2.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Symfony StubNumberFormatterTest#testFormatTypeInt32Intl #2
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+
+// StubNumberFormatterTest#testFormatTypeInt32Intl is tested many times, each 
with different args.
+// there are 7 sets of args that crash PHP (and other args that don't), each 
of those 7 is now a separate PHPT test
+// to ensure that each of the 7 args are always tested.
+
+// PHP Unit's code to unserialize data passed as args to 
#testFormatTypeInt32Intl
+$unit_test_args = 
unserialize('a:3:{i:0;O:15:"NumberFormatter":0:{}i:1;d:1.1000000000000001;i:2;s:1:"1";}');
+
+var_dump($unit_test_args);
+
+// execute the code from #testFormatTypeInt32Intl
+$unit_test_args[0]->format($unit_test_args[1], \NumberFormatter::TYPE_INT32);
+
+echo "== didn't crash ==".PHP_EOL;
+
+?>
+--EXPECT--
+array(3) {
+  [0]=>
+  object(NumberFormatter)#1 (0) {
+  }
+  [1]=>
+  float(1.1)
+  [2]=>
+  string(1) "1"
+}
+== didn't crash ==
diff --git a/ext/intl/tests/symfony_format_type_int32_intl3.phpt 
b/ext/intl/tests/symfony_format_type_int32_intl3.phpt
new file mode 100644
index 0000000..5e657db
--- /dev/null
+++ b/ext/intl/tests/symfony_format_type_int32_intl3.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Symfony StubNumberFormatterTest#testFormatTypeInt32Intl #3
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+
+
+// PHP Unit's code to unserialize data passed as args to 
#testFormatTypeInt32Intl
+$unit_test_args = 
unserialize('a:4:{i:0;O:15:"NumberFormatter":0:{}i:1;d:2147483648;i:2;s:14:"-2,147,483,648";i:3;s:83:"->format()
 TYPE_INT32 formats inconsistently an integer if out of the 32 bit range.";}');
+
+var_dump($unit_test_args);
+
+// execute the code from #testFormatTypeInt32Intl
+$unit_test_args[0]->format($unit_test_args[1], \NumberFormatter::TYPE_INT32);
+
+echo "== didn't crash ==".PHP_EOL;
+
+?>
+--EXPECT--
+array(4) {
+  [0]=>
+  object(NumberFormatter)#1 (0) {
+  }
+  [1]=>
+  float(2147483648)
+  [2]=>
+  string(14) "-2,147,483,648"
+  [3]=>
+  string(83) "->format() TYPE_INT32 formats inconsistently an integer if out 
of the 32 bit range."
+}
+== didn't crash ==
diff --git a/ext/intl/tests/symfony_format_type_int32_intl4.phpt 
b/ext/intl/tests/symfony_format_type_int32_intl4.phpt
new file mode 100644
index 0000000..54043d9
--- /dev/null
+++ b/ext/intl/tests/symfony_format_type_int32_intl4.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Symfony StubNumberFormatterTest#testFormatTypeInt32Intl #4
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+
+
+// PHP Unit's code to unserialize data passed as args to 
#testFormatTypeInt32Intl
+$unit_test_args = 
unserialize('a:3:{i:0;O:15:"NumberFormatter":0:{}i:1;i:1;i:2;s:7:"SFD1.00";}');
+
+var_dump($unit_test_args);
+
+// execute the code from #testFormatTypeInt32Intl
+$unit_test_args[0]->format($unit_test_args[1], \NumberFormatter::TYPE_INT32);
+
+echo "== didn't crash ==".PHP_EOL;
+
+?>
+--EXPECT--
+array(3) {
+  [0]=>
+  object(NumberFormatter)#1 (0) {
+  }
+  [1]=>
+  int(1)
+  [2]=>
+  string(7) "SFD1.00"
+}
+== didn't crash ==
diff --git a/ext/intl/tests/symfony_format_type_int32_intl5.phpt 
b/ext/intl/tests/symfony_format_type_int32_intl5.phpt
new file mode 100644
index 0000000..d5f78d7
--- /dev/null
+++ b/ext/intl/tests/symfony_format_type_int32_intl5.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Symfony StubNumberFormatterTest#testFormatTypeInt32Intl #5
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+
+
+// PHP Unit's code to unserialize data passed as args to 
#testFormatTypeInt32Intl
+$unit_test_args = 
unserialize('a:3:{i:0;O:15:"NumberFormatter":0:{}i:1;d:1.1000000000000001;i:2;s:7:"SFD1.00";}');
+
+var_dump($unit_test_args);
+
+// execute the code from #testFormatTypeInt32Intl
+$unit_test_args[0]->format($unit_test_args[1], \NumberFormatter::TYPE_INT32);
+
+echo "== didn't crash ==".PHP_EOL;
+
+?>
+--EXPECT--
+array(3) {
+  [0]=>
+  object(NumberFormatter)#1 (0) {
+  }
+  [1]=>
+  float(1.1)
+  [2]=>
+  string(7) "SFD1.00"
+}
+== didn't crash ==
diff --git a/ext/intl/tests/symfony_format_type_int32_intl6.phpt 
b/ext/intl/tests/symfony_format_type_int32_intl6.phpt
new file mode 100644
index 0000000..fa70879
--- /dev/null
+++ b/ext/intl/tests/symfony_format_type_int32_intl6.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Symfony StubNumberFormatterTest#testFormatTypeInt32Intl #6
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+
+
+// PHP Unit's code to unserialize data passed as args to 
#testFormatTypeInt32Intl
+$unit_test_args = 
unserialize('a:4:{i:0;O:15:"NumberFormatter":0:{}i:1;d:2147483648;i:2;s:21:"(SFD2,147,483,648.00)";i:3;s:83:"->format()
 TYPE_INT32 formats inconsistently an integer if out of the 32 bit range.";}');
+
+var_dump($unit_test_args);
+
+// execute the code from #testFormatTypeInt32Intl
+$unit_test_args[0]->format($unit_test_args[1], \NumberFormatter::TYPE_INT32);
+
+echo "== didn't crash ==".PHP_EOL;
+
+?>
+--EXPECT--
+array(4) {
+  [0]=>
+  object(NumberFormatter)#1 (0) {
+  }
+  [1]=>
+  float(2147483648)
+  [2]=>
+  string(21) "(SFD2,147,483,648.00)"
+  [3]=>
+  string(83) "->format() TYPE_INT32 formats inconsistently an integer if out 
of the 32 bit range."
+}
+== didn't crash ==
diff --git a/ext/intl/tests/symfony_format_type_int32_intl7.phpt 
b/ext/intl/tests/symfony_format_type_int32_intl7.phpt
new file mode 100644
index 0000000..5bbe426
--- /dev/null
+++ b/ext/intl/tests/symfony_format_type_int32_intl7.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Symfony StubNumberFormatterTest#testFormatTypeInt32Intl #7
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+
+
+// PHP Unit's code to unserialize data passed as args to 
#testFormatTypeInt32Intl
+$unit_test_args = 
unserialize('a:4:{i:0;O:15:"NumberFormatter":0:{}i:1;d:-2147483649;i:2;s:19:"SFD2,147,483,647.00";i:3;s:83:"->format()
 TYPE_INT32 formats inconsistently an integer if out of the 32 bit range.";}');
+
+var_dump($unit_test_args);
+
+// execute the code from #testFormatTypeInt32Intl
+$unit_test_args[0]->format($unit_test_args[1], \NumberFormatter::TYPE_INT32);
+
+echo "== didn't crash ==".PHP_EOL;
+
+?>
+--EXPECT--
+array(4) {
+  [0]=>
+  object(NumberFormatter)#1 (0) {
+  }
+  [1]=>
+  float(-2147483649)
+  [2]=>
+  string(19) "SFD2,147,483,647.00"
+  [3]=>
+  string(83) "->format() TYPE_INT32 formats inconsistently an integer if out 
of the 32 bit range."
+}
+== didn't crash ==
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to