<?php

use Foo\TestEnum;
use Foo\TestMessage;
use Foo\TestMessage_Sub;
use Foo\TestPackedMessage;
use Foo\TestUnpackedMessage;

define('MAX_FLOAT_DIFF', 0.000001);

if (PHP_INT_SIZE == 8) {
    define('MAX_INT_STRING', '9223372036854775807');
    define('MAX_INT_UPPER_STRING', '9223372036854775808');
} else {
    define('MAX_INT_STRING', '2147483647');
    define('MAX_INT_UPPER_STRING', '2147483648');
}

define('MAX_INT32', 2147483647);
define('MAX_INT32_FLOAT', 2147483647.0);
define('MAX_INT32_STRING', '2147483647');

define('MIN_INT32', (int)-2147483648);
define('MIN_INT32_FLOAT', -2147483648.0);
define('MIN_INT32_STRING', '-2147483648');

define('MAX_UINT32', 4294967295);
define('MAX_UINT32_FLOAT', 4294967295.0);
define('MAX_UINT32_STRING', '4294967295');

define('MIN_UINT32', (int)-2147483648);
define('MIN_UINT32_FLOAT', -2147483648.0);
define('MIN_UINT32_STRING', '-2147483648');

define('MAX_INT64_STRING',  '9223372036854775807');
define('MIN_INT64_STRING',  '-9223372036854775808');
define('MAX_UINT64_STRING', '-9223372036854775808');

if (PHP_INT_SIZE === 8) {
    define('MAX_INT64',  (int)9223372036854775807);
    define('MIN_INT64',  (int)-9223372036854775808);
    define('MAX_UINT64', (int)-9223372036854775808);
} else {
    define('MAX_INT64', MAX_INT64_STRING);
    define('MIN_INT64', MIN_INT64_STRING);
    define('MAX_UINT64', MAX_UINT64_STRING);
}

class TestUtil
{

    public static function setTestMessage(TestMessage $m)
    {
        $m->setOptionalInt32(-42);
        $m->setOptionalInt64(-43);
        $m->setOptionalUint32(42);
        $m->setOptionalUint64(43);
        $m->setOptionalSint32(-44);
        $m->setOptionalSint64(-45);
        $m->setOptionalFixed32(46);
        $m->setOptionalFixed64(47);
        $m->setOptionalSfixed32(-46);
        $m->setOptionalSfixed64(-47);
        $m->setOptionalFloat(1.5);
        $m->setOptionalDouble(1.6);
        $m->setOptionalBool(true);
        $m->setOptionalString('a');
        $m->setOptionalBytes('b');
        $m->setOptionalEnum(TestEnum::ONE);
        $sub = new TestMessage_Sub();
        $m->setOptionalMessage($sub);
        $m->getOptionalMessage()->SetA(33);

        $m->getRepeatedInt32()    []= -42;
        $m->getRepeatedInt64()    []= -43;
        $m->getRepeatedUint32()   []=  42;
        $m->getRepeatedUint64()   []=  43;
        $m->getRepeatedSint32()   []= -44;
        $m->getRepeatedSint64()   []= -45;
        $m->getRepeatedFixed32()  []=  46;
        $m->getRepeatedFixed64()  []=  47;
        $m->getRepeatedSfixed32() []= -46;
        $m->getRepeatedSfixed64() []= -47;
        $m->getRepeatedFloat()    []= 1.5;
        $m->getRepeatedDouble()   []= 1.6;
        $m->getRepeatedBool()     []= true;
        $m->getRepeatedString()   []= 'a';
        $m->getRepeatedBytes()    []= 'b';
        $m->getRepeatedEnum()     []= TestEnum::ZERO;
        $m->getRepeatedMessage()  []= new TestMessage_Sub();
        $m->getRepeatedMessage()[0]->setA(34);

        $m->getRepeatedInt32()    []= -52;
        $m->getRepeatedInt64()    []= -53;
        $m->getRepeatedUint32()   []=  52;
        $m->getRepeatedUint64()   []=  53;
        $m->getRepeatedSint32()   []= -54;
        $m->getRepeatedSint64()   []= -55;
        $m->getRepeatedFixed32()  []=  56;
        $m->getRepeatedFixed64()  []=  57;
        $m->getRepeatedSfixed32() []= -56;
        $m->getRepeatedSfixed64() []= -57;
        $m->getRepeatedFloat()    []= 2.5;
        $m->getRepeatedDouble()   []= 2.6;
        $m->getRepeatedBool()     []= false;
        $m->getRepeatedString()   []= 'c';
        $m->getRepeatedBytes()    []= 'd';
        $m->getRepeatedEnum()     []= TestEnum::ONE;
        $m->getRepeatedMessage()  []= new TestMessage_Sub();
        $m->getRepeatedMessage()[1]->SetA(35);

        $m->getMapInt32Int32()[-62] = -62;
        $m->getMapInt64Int64()[-63] = -63;
        $m->getMapUint32Uint32()[62] = 62;
        $m->getMapUint64Uint64()[63] = 63;
        $m->getMapSint32Sint32()[-64] = -64;
        $m->getMapSint64Sint64()[-65] = -65;
        $m->getMapFixed32Fixed32()[66] = 66;
        $m->getMapFixed64Fixed64()[67] = 67;
        $m->getMapSfixed32Sfixed32()[-68] = -68;
        $m->getMapSfixed64Sfixed64()[-69] = -69;
        $m->getMapInt32Float()[1] = 3.5;
        $m->getMapInt32Double()[1] = 3.6;
        $m->getMapBoolBool()[true] = true;
        $m->getMapStringString()['e'] = 'e';
        $m->getMapInt32Bytes()[1] = 'f';
        $m->getMapInt32Enum()[1] = TestEnum::ONE;
        $m->getMapInt32Message()[1] = new TestMessage_Sub();
        $m->getMapInt32Message()[1]->SetA(36);
    }

    public static function setTestMessage2(TestMessage $m)
    {
        $sub = new TestMessage_Sub();

        $m->setOptionalInt32(-142);
        $m->setOptionalInt64(-143);
        $m->setOptionalUint32(142);
        $m->setOptionalUint64(143);
        $m->setOptionalSint32(-144);
        $m->setOptionalSint64(-145);
        $m->setOptionalFixed32(146);
        $m->setOptionalFixed64(147);
        $m->setOptionalSfixed32(-146);
        $m->setOptionalSfixed64(-147);
        $m->setOptionalFloat(11.5);
        $m->setOptionalDouble(11.6);
        $m->setOptionalBool(true);
        $m->setOptionalString('aa');
        $m->setOptionalBytes('bb');
        $m->setOptionalEnum(TestEnum::TWO);
        $m->setOptionalMessage($sub);
        $m->getOptionalMessage()->SetA(133);

        $m->getRepeatedInt32()    []= -142;
        $m->getRepeatedInt64()    []= -143;
        $m->getRepeatedUint32()   []=  142;
        $m->getRepeatedUint64()   []=  143;
        $m->getRepeatedSint32()   []= -144;
        $m->getRepeatedSint64()   []= -145;
        $m->getRepeatedFixed32()  []=  146;
        $m->getRepeatedFixed64()  []=  147;
        $m->getRepeatedSfixed32() []= -146;
        $m->getRepeatedSfixed64() []= -147;
        $m->getRepeatedFloat()    []= 11.5;
        $m->getRepeatedDouble()   []= 11.6;
        $m->getRepeatedBool()     []= false;
        $m->getRepeatedString()   []= 'aa';
        $m->getRepeatedBytes()    []= 'bb';
        $m->getRepeatedEnum()     []= TestEnum::TWO;
        $m->getRepeatedMessage()  []= new TestMessage_Sub();
        $m->getRepeatedMessage()[0]->setA(134);

        $m->getMapInt32Int32()[-62] = -162;
        $m->getMapInt64Int64()[-63] = -163;
        $m->getMapUint32Uint32()[62] = 162;
        $m->getMapUint64Uint64()[63] = 163;
        $m->getMapSint32Sint32()[-64] = -164;
        $m->getMapSint64Sint64()[-65] = -165;
        $m->getMapFixed32Fixed32()[66] = 166;
        $m->getMapFixed64Fixed64()[67] = 167;
        $m->getMapSfixed32Sfixed32()[-68] = -168;
        $m->getMapSfixed64Sfixed64()[-69] = -169;
        $m->getMapInt32Float()[1] = 13.5;
        $m->getMapInt32Double()[1] = 13.6;
        $m->getMapBoolBool()[true] = false;
        $m->getMapStringString()['e'] = 'ee';
        $m->getMapInt32Bytes()[1] = 'ff';
        $m->getMapInt32Enum()[1] = TestEnum::TWO;
        $m->getMapInt32Message()[1] = new TestMessage_Sub();
        $m->getMapInt32Message()[1]->SetA(136);

        $m->getMapInt32Int32()[-162] = -162;
        $m->getMapInt64Int64()[-163] = -163;
        $m->getMapUint32Uint32()[162] = 162;
        $m->getMapUint64Uint64()[163] = 163;
        $m->getMapSint32Sint32()[-164] = -164;
        $m->getMapSint64Sint64()[-165] = -165;
        $m->getMapFixed32Fixed32()[166] = 166;
        $m->getMapFixed64Fixed64()[167] = 167;
        $m->getMapSfixed32Sfixed32()[-168] = -168;
        $m->getMapSfixed64Sfixed64()[-169] = -169;
        $m->getMapInt32Float()[2] = 13.5;
        $m->getMapInt32Double()[2] = 13.6;
        $m->getMapBoolBool()[false] = false;
        $m->getMapStringString()['ee'] = 'ee';
        $m->getMapInt32Bytes()[2] = 'ff';
        $m->getMapInt32Enum()[2] = TestEnum::TWO;
        $m->getMapInt32Message()[2] = new TestMessage_Sub();
        $m->getMapInt32Message()[2]->SetA(136);
    }

    public static function assertTestMessage(TestMessage $m)
    {
        if (PHP_INT_SIZE == 4) {
            assert('-43' === $m->getOptionalInt64());
            assert('43'  === $m->getOptionalUint64());
            assert('-45' === $m->getOptionalSint64());
            assert('47'  === $m->getOptionalFixed64());
            assert('-47' === $m->getOptionalSfixed64());
        } else {
            assert(-43 === $m->getOptionalInt64());
            assert(43  === $m->getOptionalUint64());
            assert(-45 === $m->getOptionalSint64());
            assert(47  === $m->getOptionalFixed64());
            assert(-47 === $m->getOptionalSfixed64());
        }
        assert(-42 === $m->getOptionalInt32());
        assert(42  === $m->getOptionalUint32());
        assert(-44 === $m->getOptionalSint32());
        assert(46  === $m->getOptionalFixed32());
        assert(-46 === $m->getOptionalSfixed32());
        assert(1.5 === $m->getOptionalFloat());
        assert(1.6 === $m->getOptionalDouble());
        assert(true=== $m->getOptionalBool());
        assert('a' === $m->getOptionalString());
        assert('b' === $m->getOptionalBytes());
        assert(TestEnum::ONE === $m->getOptionalEnum());
        assert(33  === $m->getOptionalMessage()->getA());

        if (PHP_INT_SIZE == 4) {
            assert('-43' === $m->getRepeatedInt64()[0]);
            assert('43'  === $m->getRepeatedUint64()[0]);
            assert('-45' === $m->getRepeatedSint64()[0]);
            assert('47'  === $m->getRepeatedFixed64()[0]);
            assert('-47' === $m->getRepeatedSfixed64()[0]);
        } else {
            assert(-43 === $m->getRepeatedInt64()[0]);
            assert(43  === $m->getRepeatedUint64()[0]);
            assert(-45 === $m->getRepeatedSint64()[0]);
            assert(47  === $m->getRepeatedFixed64()[0]);
            assert(-47 === $m->getRepeatedSfixed64()[0]);
        }
        assert(-42 === $m->getRepeatedInt32()[0]);
        assert(42  === $m->getRepeatedUint32()[0]);
        assert(-44 === $m->getRepeatedSint32()[0]);
        assert(46  === $m->getRepeatedFixed32()[0]);
        assert(-46 === $m->getRepeatedSfixed32()[0]);
        assert(1.5 === $m->getRepeatedFloat()[0]);
        assert(1.6 === $m->getRepeatedDouble()[0]);
        assert(true=== $m->getRepeatedBool()[0]);
        assert('a' === $m->getRepeatedString()[0]);
        assert('b' === $m->getRepeatedBytes()[0]);
        assert(TestEnum::ZERO === $m->getRepeatedEnum()[0]);
        assert(34  === $m->getRepeatedMessage()[0]->getA());

        if (PHP_INT_SIZE == 4) {
            assert('-53' === $m->getRepeatedInt64()[1]);
            assert('53'  === $m->getRepeatedUint64()[1]);
            assert('-55' === $m->getRepeatedSint64()[1]);
            assert('57'  === $m->getRepeatedFixed64()[1]);
            assert('-57' === $m->getRepeatedSfixed64()[1]);
        } else {
            assert(-53 === $m->getRepeatedInt64()[1]);
            assert(53  === $m->getRepeatedUint64()[1]);
            assert(-55 === $m->getRepeatedSint64()[1]);
            assert(57  === $m->getRepeatedFixed64()[1]);
            assert(-57 === $m->getRepeatedSfixed64()[1]);
        }
        assert(-52 === $m->getRepeatedInt32()[1]);
        assert(52  === $m->getRepeatedUint32()[1]);
        assert(-54 === $m->getRepeatedSint32()[1]);
        assert(56  === $m->getRepeatedFixed32()[1]);
        assert(-56 === $m->getRepeatedSfixed32()[1]);
        assert(2.5 === $m->getRepeatedFloat()[1]);
        assert(2.6 === $m->getRepeatedDouble()[1]);
        assert(false === $m->getRepeatedBool()[1]);
        assert('c' === $m->getRepeatedString()[1]);
        assert('d' === $m->getRepeatedBytes()[1]);
        assert(TestEnum::ONE === $m->getRepeatedEnum()[1]);
        assert(35  === $m->getRepeatedMessage()[1]->getA());

        if (PHP_INT_SIZE == 4) {
            assert('-63' === $m->getMapInt64Int64()['-63']);
            assert('63'  === $m->getMapUint64Uint64()['63']);
            assert('-65' === $m->getMapSint64Sint64()['-65']);
            assert('67'  === $m->getMapFixed64Fixed64()['67']);
            assert('-69'  === $m->getMapSfixed64Sfixed64()['-69']);
        } else {
            assert(-63 === $m->getMapInt64Int64()[-63]);
            assert(63  === $m->getMapUint64Uint64()[63]);
            assert(-65 === $m->getMapSint64Sint64()[-65]);
            assert(67  === $m->getMapFixed64Fixed64()[67]);
            assert(-69  === $m->getMapSfixed64Sfixed64()[-69]);
        }
        assert(-62 === $m->getMapInt32Int32()[-62]);
        assert(62  === $m->getMapUint32Uint32()[62]);
        assert(-64 === $m->getMapSint32Sint32()[-64]);
        assert(66  === $m->getMapFixed32Fixed32()[66]);
        assert(-68  === $m->getMapSfixed32Sfixed32()[-68]);
        assert(3.5 === $m->getMapInt32Float()[1]);
        assert(3.6 === $m->getMapInt32Double()[1]);
        assert(true === $m->getMapBoolBool()[true]);
        assert('e' === $m->getMapStringString()['e']);
        assert('f' === $m->getMapInt32Bytes()[1]);
        assert(TestEnum::ONE === $m->getMapInt32Enum()[1]);
        assert(36  === $m->getMapInt32Message()[1]->GetA());
    }

    public static function getGoldenTestMessage()
    {
        return hex2bin(
            "08D6FFFFFFFFFFFFFFFF01" .
            "10D5FFFFFFFFFFFFFFFF01" .
            "182A" .
            "202B" .
            "2857" .
            "3059" .
            "3D2E000000" .
            "412F00000000000000" .
            "4DD2FFFFFF" .
            "51D1FFFFFFFFFFFFFF" .
            "5D0000C03F" .
            "619A9999999999F93F" .
            "6801" .
            "720161" .
            "7A0162" .
            "800101" .
            "8A01020821" .

            "F801D6FFFFFFFFFFFFFFFF01" .
            "F801CCFFFFFFFFFFFFFFFF01" .
            "8002D5FFFFFFFFFFFFFFFF01" .
            "8002CBFFFFFFFFFFFFFFFF01" .
            "88022A" .
            "880234" .
            "90022B" .
            "900235" .
            "980257" .
            "98026B" .
            "A00259" .
            "A0026D" .
            "AD022E000000" .
            "AD0238000000" .
            "B1022F00000000000000" .
            "B1023900000000000000" .
            "BD02D2FFFFFF" .
            "BD02C8FFFFFF" .
            "C102D1FFFFFFFFFFFFFF" .
            "C102C7FFFFFFFFFFFFFF" .
            "CD020000C03F" .
            "CD0200002040" .
            "D1029A9999999999F93F" .
            "D102CDCCCCCCCCCC0440" .
            "D80201" .
            "D80200" .
            "E2020161" .
            "E2020163" .
            "EA020162" .
            "EA020164" .
            "F00200" .
            "F00201" .
            "FA02020822" .
            "FA02020823" .

            "BA041608C2FFFFFFFFFFFFFFFF0110C2FFFFFFFFFFFFFFFF01" .
            "C2041608C1FFFFFFFFFFFFFFFF0110C1FFFFFFFFFFFFFFFF01" .
            "CA0404083E103E" .
            "D20404083F103F" .
            "DA0404087f107F" .
            "E20406088101108101" .
            "EA040A0D420000001542000000" .
            "F20412094300000000000000114300000000000000" .
            "FA040A0DBCFFFFFF15BCFFFFFF" .
            "82051209BBFFFFFFFFFFFFFF11BBFFFFFFFFFFFFFF" .
            "8A050708011500006040" .
            "92050B080111CDCCCCCCCCCC0C40" .
            "9A050408011001" .
            "A205060a0165120165" .
            "AA05050801120166" .
            "B2050408011001" .
            "Ba0506080112020824"
        );
    }

    public static function setTestPackedMessage($m)
    {
        $m->getRepeatedInt32()[] = -42;
        $m->getRepeatedInt32()[] = -52;
        $m->getRepeatedInt64()[] = -43;
        $m->getRepeatedInt64()[] = -53;
        $m->getRepeatedUint32()[] = 42;
        $m->getRepeatedUint32()[] = 52;
        $m->getRepeatedUint64()[] = 43;
        $m->getRepeatedUint64()[] = 53;
        $m->getRepeatedSint32()[] = -44;
        $m->getRepeatedSint32()[] = -54;
        $m->getRepeatedSint64()[] = -45;
        $m->getRepeatedSint64()[] = -55;
        $m->getRepeatedFixed32()[] = 46;
        $m->getRepeatedFixed32()[] = 56;
        $m->getRepeatedFixed64()[] = 47;
        $m->getRepeatedFixed64()[] = 57;
        $m->getRepeatedSfixed32()[] = -46;
        $m->getRepeatedSfixed32()[] = -56;
        $m->getRepeatedSfixed64()[] = -47;
        $m->getRepeatedSfixed64()[] = -57;
        $m->getRepeatedFloat()[] = 1.5;
        $m->getRepeatedFloat()[] = 2.5;
        $m->getRepeatedDouble()[] = 1.6;
        $m->getRepeatedDouble()[] = 2.6;
        $m->getRepeatedBool()[] = true;
        $m->getRepeatedBool()[] = false;
        $m->getRepeatedEnum()[] = TestEnum::ONE;
        $m->getRepeatedEnum()[] = TestEnum::ZERO;
    }

    public static function assertTestPackedMessage($m)
    {
        assert(2 === count($m->getRepeatedInt32()));
        assert(2 === count($m->getRepeatedInt64()));
        assert(2 === count($m->getRepeatedUint32()));
        assert(2 === count($m->getRepeatedUint64()));
        assert(2 === count($m->getRepeatedSint32()));
        assert(2 === count($m->getRepeatedSint64()));
        assert(2 === count($m->getRepeatedFixed32()));
        assert(2 === count($m->getRepeatedFixed64()));
        assert(2 === count($m->getRepeatedSfixed32()));
        assert(2 === count($m->getRepeatedSfixed64()));
        assert(2 === count($m->getRepeatedFloat()));
        assert(2 === count($m->getRepeatedDouble()));
        assert(2 === count($m->getRepeatedBool()));
        assert(2 === count($m->getRepeatedEnum()));

        assert(-42 === $m->getRepeatedInt32()[0]);
        assert(-52 === $m->getRepeatedInt32()[1]);
        assert(42  === $m->getRepeatedUint32()[0]);
        assert(52  === $m->getRepeatedUint32()[1]);
        assert(-44 === $m->getRepeatedSint32()[0]);
        assert(-54 === $m->getRepeatedSint32()[1]);
        assert(46  === $m->getRepeatedFixed32()[0]);
        assert(56  === $m->getRepeatedFixed32()[1]);
        assert(-46 === $m->getRepeatedSfixed32()[0]);
        assert(-56 === $m->getRepeatedSfixed32()[1]);
        assert(1.5 === $m->getRepeatedFloat()[0]);
        assert(2.5 === $m->getRepeatedFloat()[1]);
        assert(1.6 === $m->getRepeatedDouble()[0]);
        assert(2.6 === $m->getRepeatedDouble()[1]);
        assert(true  === $m->getRepeatedBool()[0]);
        assert(false === $m->getRepeatedBool()[1]);
        assert(TestEnum::ONE  === $m->getRepeatedEnum()[0]);
        assert(TestEnum::ZERO === $m->getRepeatedEnum()[1]);
        if (PHP_INT_SIZE == 4) {
            assert('-43' === $m->getRepeatedInt64()[0]);
            assert('-53' === $m->getRepeatedInt64()[1]);
            assert('43'  === $m->getRepeatedUint64()[0]);
            assert('53'  === $m->getRepeatedUint64()[1]);
            assert('-45' === $m->getRepeatedSint64()[0]);
            assert('-55' === $m->getRepeatedSint64()[1]);
            assert('47'  === $m->getRepeatedFixed64()[0]);
            assert('57'  === $m->getRepeatedFixed64()[1]);
            assert('-47' === $m->getRepeatedSfixed64()[0]);
            assert('-57' === $m->getRepeatedSfixed64()[1]);
        } else {
            assert(-43 === $m->getRepeatedInt64()[0]);
            assert(-53 === $m->getRepeatedInt64()[1]);
            assert(43  === $m->getRepeatedUint64()[0]);
            assert(53  === $m->getRepeatedUint64()[1]);
            assert(-45 === $m->getRepeatedSint64()[0]);
            assert(-55 === $m->getRepeatedSint64()[1]);
            assert(47  === $m->getRepeatedFixed64()[0]);
            assert(57  === $m->getRepeatedFixed64()[1]);
            assert(-47 === $m->getRepeatedSfixed64()[0]);
            assert(-57 === $m->getRepeatedSfixed64()[1]);
        }
    }

    public static function getGoldenTestPackedMessage()
    {
        return hex2bin(
            "D20514D6FFFFFFFFFFFFFFFF01CCFFFFFFFFFFFFFFFF01" .
            "DA0514D5FFFFFFFFFFFFFFFF01CBFFFFFFFFFFFFFFFF01" .
            "E205022A34" .
            "EA05022B35" .
            "F20502576B" .
            "FA0502596D" .
            "8206082E00000038000000" .
            "8A06102F000000000000003900000000000000" .
            "920608D2FFFFFFC8FFFFFF" .
            "9A0610D1FFFFFFFFFFFFFFC7FFFFFFFFFFFFFF" .
            "A206080000C03F00002040" .
            "AA06109A9999999999F93FCDCCCCCCCCCC0440" .
            "B206020100" .
            "BA06020100"
        );
    }

    public static function getGoldenTestUnpackedMessage()
    {
        return hex2bin(
            "D005D6FFFFFFFFFFFFFFFF01D005CCFFFFFFFFFFFFFFFF01" .
            "D805D5FFFFFFFFFFFFFFFF01D805CBFFFFFFFFFFFFFFFF01" .
            "E0052AE00534" .
            "E8052BE80535" .
            "F00557F0056B" .
            "F80559F8056D" .
            "85062E000000850638000000" .
            "89062F0000000000000089063900000000000000" .
            "9506D2FFFFFF9506C8FFFFFF" .
            "9906D1FFFFFFFFFFFFFF9906C7FFFFFFFFFFFFFF" .
            "A5060000C03FA50600002040" .
            "A9069A9999999999F93FA906CDCCCCCCCCCC0440" .
            "B00601B00600" .
            "B80601B80600"
        );
    }
}
