// 3rd_party_lib:memorycache/target/memorycache
// 3rd_party_lib_ohos:memorycache/target/aarch64-linux-ohos/memorycache

import std.math.*
import std.fs.*
import memorycache.*

@Test
public class TestFifoCache{
    @TestCase
    func L0_Test_FifoCache_getCapacity_01(): Unit {
        var fc= FifoCache(56)
        @Assert(fc.getCapacity(),56)
    }

    @TestCase
    func L0_Test_FifoCache_getCapacity_02(): Unit {
        var fc= FifoCache(Int64.Max)
        @Assert(fc.getCapacity(),Int64.Max)
    }
    @TestCase
    func L0_Test_FifoCache_setCapacity_05(): Unit {
        var fc= FifoCache(56)
        fc.setCapacity(Int64.Max)
        @Assert(fc.getCapacity(),Int64.Max)
    }
    @TestCase
    func L0_Test_FifoCache_put_04(): Unit {
        var fc= FifoCache(56)
        fc.put("one","content-one")
        fc.put("two","content-two")
        var re=fc.get("two").getOrThrow()
        @Assert(re,"content-two")
    }
    @TestCase
    func L0_Test_FifoCache_put_05(): Unit {
        var fc= FifoCache(56)
        fc.put("","content-one")
        var re=fc.get("").getOrThrow()
        @Assert(re,"content-one")
    }
    @TestCase
    func L0_Test_FifoCache_put_07(): Unit {
        var fc= FifoCache(2)
        fc.put("content-one","content-one")
        fc.put("content-two","content-two")
        fc.put("content-three","content-three")
        var re=fc.get("content-two").getOrThrow()
        @Assert(re,"content-two")
        re=fc.get("content-three").getOrThrow()
        @Assert(re,"content-three")
        var reNone=fc.get("content-one")
        @Assert(reNone.isNone(),true)
    }
    @TestCase
    func L0_Test_FifoCache_put_08(): Unit {
        var fc= FifoCache(2)
        fc.put("content-one","content-one")
        fc.put("content-two","content-two")
        var re=fc.get("content-two").getOrThrow()
        @Assert(re,"content-two")
        re=fc.get("content-one").getOrThrow()
        @Assert(re,"content-one")
    }
    @TestCase
    func L0_Test_FifoCache_put_09(): Unit {
        var fc= FifoCache(7)
        fc.put("content-one","content")
        var re=fc.get("content-one").getOrThrow()
        @Assert(re,"content")
    }
    @TestCase
    func L0_Test_FifoCache_put_10(): Unit {
        var fc= FifoCache(8)
        fc.put("content-one","content")
        var re=fc.get("content-one").getOrThrow()
        @Assert(re,"content")
    }
    @TestCase
    func L0_Test_FifoCache_put_11(): Unit {
        var fc= FifoCache(6)
        fc.put("content-one","content")
        var re=fc.get("content-one").getOrThrow()
        @Assert(re,"content")
    }
    @TestCase
    func L0_Test_FifoCache_get_12(): Unit {
        var fc= FifoCache(34)
        @Assert(fc.get("content-one").isNone(),true)
    }
    @TestCase
    func L0_Test_FifoCache_contains_08(): Unit {
        var fc= FifoCache(35)
        @Assert(fc.contains("content-one"),false)
        fc.put("content-one","content")
        @Assert(fc.contains("content-one"),true)
    }

    @TestCase
    func L0_Test_FifoCache_remove_08(): Unit {
        var fc= FifoCache(35)
        fc.remove() 
        fc.put("content-one","content-one")
        fc.put("content-two","content-two")
        fc.remove()   
        @Assert(fc.contains("content-one"),false)
        @Assert(fc.contains("content-two"),true)
        fc.remove()
        @Assert(fc.contains("content-one"),false)
        @Assert(fc.contains("content-one"),false)
    }
    @TestCase
    func L0_Test_FifoCache_clear_08(): Unit {
        var fc= FifoCache(14)
        fc.put("content-one","content")
        fc.put("content-two","content")
        @Assert(fc.contains("content-one"),true)
        @Assert(fc.contains("content-two"),true)
        fc.clear()
        @Assert(fc.contains("content-one"),false)
        @Assert(fc.contains("content-two"),false)
    }
    @TestCase
    func L0_Test_FifoCache_clear_09(): Unit {
        var fc= FifoCache(14)
        fc.clear()
        @Assert(fc.contains("content-one"),false)
        @Assert(fc.contains("content-two"),false) 
    }
}