From dd239530d8381090ab6979917826a2d4b684803d Mon Sep 17 00:00:00 2001 From: belliash Date: Mon, 6 Aug 2018 08:23:51 +0200 Subject: [PATCH] Test if unicode characters can be used as method / variable name --- tests/utf8_variables.aer | 43 ++++++++++++++++++++++++++++++++++++++++ tests/utf8_variables.exp | 4 ++++ 2 files changed, 47 insertions(+) create mode 100644 tests/utf8_variables.aer create mode 100644 tests/utf8_variables.exp diff --git a/tests/utf8_variables.aer b/tests/utf8_variables.aer new file mode 100644 index 0000000..71a12a8 --- /dev/null +++ b/tests/utf8_variables.aer @@ -0,0 +1,43 @@ +class Main { + private $概要 = "AerScript Interpreter"; + + public function __construct() { + $this->ダウンロード(); + var_dump($this->概要); + var_dump($this->isUTF8('hello')); + var_dump($this->isUTF8("すが、基本的な使い方は単純です。かしながら使い方を身につけていきましょう")); + } + + private function ダウンロード(){ + echo $this->概要 . "\n"; + } + + private function isUTF8($str) { + $b = 0; + $c = 0; + $bits = 0; + $len = strlen($str); + for($i = 0; $i < $len; $i++) { + $c = ord($str[$i]); + if($c >= 128) { + if(($c >= 254)) return false; + elseif($c >= 252) $bits=6; + elseif($c >= 248) $bits=5; + elseif($c >= 240) $bits=4; + elseif($c >= 224) $bits=3; + elseif($c >= 192) $bits=2; + else return false; + if(($i+$bits) > $len) return false; + while($bits > 1) { + $i++; + $b=ord($str[$i]); + if($b < 128 || $b > 191) return false; + $bits--; + } + } + } + return true; + } +} + +new Main(); diff --git a/tests/utf8_variables.exp b/tests/utf8_variables.exp new file mode 100644 index 0000000..eb85df7 --- /dev/null +++ b/tests/utf8_variables.exp @@ -0,0 +1,4 @@ +AerScript Interpreter +string(21 'AerScript Interpreter') +bool(TRUE) +bool(TRUE)