package io.delphiplatform.api.v3.rdb.service import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import java.util.stream.Stream internal class BreakdownHelperTest { private val helper = BreakdownHelper() data class Dummy(val firstName: String, val lastName: String, val age: Int) data class Result(var result: Int) @Test fun test_breakdownTwoKeys() { val result = helper.breakdown( Stream.of( Dummy("A", "2", 10), Dummy("A", "3", 10), Dummy("B", "2", 10), Dummy("B", "2", 10), ), { d: Dummy -> d.firstName }, { d -> d.lastName }, { a, b -> b.result += a.age }, { Result(0) } ) Assertions.assertEquals(2, result.size) Assertions.assertEquals(2, result.get("A")?.size) Assertions.assertEquals(1, result.get("B")?.size) Assertions.assertEquals(10, result.get("A")?.get("2")?.result) Assertions.assertEquals(10, result.get("A")?.get("3")?.result) Assertions.assertEquals(20, result.get("B")?.get("2")?.result) } @Test fun test_breakdownOneKey() { val result = helper.breakdown( Stream.of( Dummy("A", "2", 10), Dummy("A", "3", 10), Dummy("B", "2", 10), Dummy("B", "2", 10), ), { d: Dummy -> d.firstName }, { a, b -> b.result += a.age }, { Result(0) } ) Assertions.assertEquals(2, result.size) Assertions.assertEquals(20, result.get("A")?.result) Assertions.assertEquals(20, result.get("B")?.result) } }