Add php protobuffer support for transition to GTFS-realtime
[busui.git] / lib / Protobuf-PHP / tests / Protobuf.spec.php
blob:a/lib/Protobuf-PHP/tests/Protobuf.spec.php -> blob:b/lib/Protobuf-PHP/tests/Protobuf.spec.php
--- a/lib/Protobuf-PHP/tests/Protobuf.spec.php
+++ b/lib/Protobuf-PHP/tests/Protobuf.spec.php
@@ -1,1 +1,65 @@
+<?php
 
+require_once __DIR__ . '/../library/DrSlump/Protobuf.php';
+
+use DrSlump\Protobuf;
+
+describe 'Protobuf'
+
+    //before
+        Protobuf::autoload();
+    //end
+
+    it 'should autoload classes'
+        new Protobuf\Codec\Binary();
+    end.
+
+    describe 'codecs registry'
+        it 'should get a default codec if none set'
+            $codec = Protobuf::getCodec();
+            $codec should be an instance of '\DrSlump\Protobuf\CodecInterface';
+        end.
+
+        it 'should return the passed codec instance'
+            $passed = new Protobuf\Codec\Binary();
+            $getted = Protobuf::getCodec($passed);
+            $getted should be $passed
+        end.
+
+        it. 'should register a new codec'
+            $setted = new Protobuf\Codec\Binary();
+            Protobuf::registerCodec('test', $setted);
+            $getted = Protobuf::getCodec('test');
+            $getted should be $setted
+        end.
+
+        it 'should register a new default codec'
+            $setted = new Protobuf\Codec\Binary();
+            Protobuf::setDefaultCodec($setted);
+            Protobuf::getCodec() should be $setted
+        end.
+
+        # throws DrSlump\Protobuf\Exception
+        it. 'should unregister a codec'
+            $setted = new Protobuf\Codec\Binary();
+            Protobuf::registerCodec('test', $setted);
+            $result = Protobuf::unregisterCodec('test');
+            $result should be true;
+            // If not set throws an exception
+            Protobuf::getCodec('test');
+        end.
+
+        it. 'should unregister the default codec'
+            $result = Protobuf::unregisterCodec('default');
+            $result should be true;
+            // Ensure a new default is given
+            $getted = Protobuf::getCodec();
+            $getted should be instanceof 'DrSlump\Protobuf\Codec\Binary'
+        end.
+    end;
+end;
+
+
+
+
+