1<?php
2
3namespace Rubix\ML\Tests\Persisters\Serializers;
4
5use Rubix\ML\Encoding;
6use Rubix\ML\Persistable;
7use Rubix\ML\Classifiers\DummyClassifier;
8use Rubix\ML\Persisters\Serializers\Gzip;
9use Rubix\ML\Persisters\Serializers\Serializer;
10use PHPUnit\Framework\TestCase;
11
12/**
13 * @group Serializers
14 * @covers \Rubix\ML\Persisters\Serializers\Gzip
15 */
16class GzipTest extends TestCase
17{
18    /**
19     * @var \Rubix\ML\Persistable
20     */
21    protected $persistable;
22
23    /**
24     * @var \Rubix\ML\Persisters\Serializers\Gzip
25     */
26    protected $serializer;
27
28    /**
29     * @before
30     */
31    protected function setUp() : void
32    {
33        $this->serializer = new Gzip(1);
34
35        $this->persistable = new DummyClassifier();
36    }
37
38    /**
39     * @test
40     */
41    public function build() : void
42    {
43        $this->assertInstanceOf(Gzip::class, $this->serializer);
44        $this->assertInstanceOf(Serializer::class, $this->serializer);
45    }
46
47    /**
48     * @test
49     */
50    public function serializeUnserialize() : void
51    {
52        $data = $this->serializer->serialize($this->persistable);
53
54        $this->assertInstanceOf(Encoding::class, $data);
55
56        $persistable = $this->serializer->unserialize($data);
57
58        $this->assertInstanceOf(DummyClassifier::class, $persistable);
59        $this->assertInstanceOf(Persistable::class, $persistable);
60    }
61}
62