<?php
declare(strict_types=1);

namespace FreshCloud\Mail\Cache\Tests;

use PHPUnit\Framework\TestCase;
use FreshCloud\Mail\Cache\InMemoryCache;

final class CacheTest extends TestCase
{
    public function testSetAndGet(): void
    {
        $cache = new InMemoryCache();
        $cache->set('key', 'value');
        $this->assertSame('value', $cache->get('key'));
    }

    public function testTtlExpiration(): void
    {
        $cache = new InMemoryCache();
        $cache->set('key', 'value', 1);
        $this->assertSame('value', $cache->get('key'));
        sleep(1);
        $this->assertNull($cache->get('key'));
    }

    public function testHasAndDelete(): void
    {
        $cache = new InMemoryCache();
        $cache->set('key', 'value');
        $this->assertTrue($cache->has('key'));
        $cache->delete('key');
        $this->assertFalse($cache->has('key'));
    }

    public function testClear(): void
    {
        $cache = new InMemoryCache();
        $cache->set('key1', 'value1');
        $cache->set('key2', 'value2');
        $cache->clear();
        $this->assertFalse($cache->has('key1'));
        $this->assertFalse($cache->has('key2'));
    }
}