Kumite (ko͞omiˌtā) is the practice of taking techniques learned from Kata and applying them through the act of freestyle sparring.
You can create a new kumite by providing some initial code and optionally some test cases. From there other warriors can spar with you, by enhancing, refactoring and translating your code. There is no limit to how many warriors you can spar with.
A great use for kumite is to begin an idea for a kata as one. You can collaborate with other code warriors until you have it right, then you can convert it to a kata.
import java.util.ArrayList; import java.util.List; public class TreasuryService { public TreasuryJob calculate(List<Transfer> transfers) { TreasuryJob job = new TreasuryJob(); job.setSettlements(new ArrayList<>()); return job; } }##- import java.util.ArrayList;
- import java.util.List;
- public class TreasuryService {
- public TreasuryJob calculate(List<Transfer> transfers) {
- TreasuryJob job = new TreasuryJob();
- job.setSettlements(new ArrayList<>());
- return job;
- }
- }
import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; import static junit.framework.TestCase.*; public class TreasuryTest { @Test public void Given_Empty_Transfer_Than_Empty_Result_Test() { TreasuryService treasuryService = new TreasuryService(); TreasuryJob treasuryJob = treasuryService.calculate(List.of()); assertEquals(0, treasuryJob.getSettlements().size()); } @Test public void Correct_Settlement_Calculations_Single_Test() { ArrayList<Transfer> transfers = new ArrayList<>(); transfers.add(new Transfer("A", "B", 10.0)); TreasuryService treasuryService = new TreasuryService(); TreasuryJob treasuryJob = treasuryService.calculate(transfers); assertEquals(1, treasuryJob.getSettlements().size()); assertEquals("A", treasuryJob.getSettlements().get(0).from); assertEquals("B", treasuryJob.getSettlements().get(0).to); assertEquals(10.0, treasuryJob.getSettlements().get(0).amount); } @Test public void Correct_Settlement_Calculations_Multi_Test() { ArrayList<Transfer> transfers = new ArrayList<>(); transfers.add(new Transfer("A", "B", 10.0)); transfers.add(new Transfer("A", "B", 5.0)); TreasuryService treasuryService = new TreasuryService(); TreasuryJob treasuryJob = treasuryService.calculate(transfers); assertEquals(1, treasuryJob.getSettlements().size()); assertEquals("A", treasuryJob.getSettlements().get(0).from); assertEquals("B", treasuryJob.getSettlements().get(0).to); assertEquals(15.0, treasuryJob.getSettlements().get(0).amount); } @Test public void Correct_Settlement_Calculations_Test() { ArrayList<Transfer> transfers = new ArrayList<>(); transfers.add(new Transfer("A", "B", 10.0)); transfers.add(new Transfer("B", "A", 5.0)); TreasuryService treasuryService = new TreasuryService(); TreasuryJob treasuryJob = treasuryService.calculate(transfers); assertEquals(1, treasuryJob.getSettlements().size()); assertEquals("A", treasuryJob.getSettlements().get(0).from); assertEquals("B", treasuryJob.getSettlements().get(0).to); assertEquals(5.0, treasuryJob.getSettlements().get(0).amount); } @Test public void Correct_Settlement_Calculations_When_There_Are_Multiple_Transfers_Test() { ArrayList<Transfer> transfers = new ArrayList<>(); transfers.add(new Transfer("A", "B", 20.0)); transfers.add(new Transfer("B", "A", 5.0)); transfers.add(new Transfer("A", "B", 10.0)); transfers.add(new Transfer("B", "A", 5.0)); transfers.add(new Transfer("B", "A", 5.0)); TreasuryService treasuryService = new TreasuryService(); TreasuryJob treasuryJob = treasuryService.calculate(transfers); assertEquals(1, treasuryJob.getSettlements().size()); assertEquals("A", treasuryJob.getSettlements().get(0).from); assertEquals("B", treasuryJob.getSettlements().get(0).to); assertEquals(15.0, treasuryJob.getSettlements().get(0).amount); } @Test public void Correct_Settlement_Calculations_When_There_Are_Multiple_Accounts_Test() { ArrayList<Transfer> transfers = new ArrayList<>(); transfers.add(new Transfer("A", "B", 20.0)); transfers.add(new Transfer("B", "C", 20.0)); transfers.add(new Transfer("C", "D", 20.0)); transfers.add(new Transfer("B", "A", 10.0)); transfers.add(new Transfer("C", "A", 10.0)); transfers.add(new Transfer("C", "A", 10.0)); transfers.add(new Transfer("D", "B", 10.0)); TreasuryService treasuryService = new TreasuryService(); TreasuryJob response = treasuryService.calculate(transfers); assertEquals(5, response.getSettlements().size()); Settlement abSettlement = response.getSettlements().stream().filter(settlement -> { boolean b = Objects.equals(settlement.from, "A") && Objects.equals(settlement.to, "B"); return b; }).findFirst().orElse(null); assertNotNull(abSettlement); assertEquals(10.0, abSettlement.amount); Settlement baSettlement = response.getSettlements().stream().filter(settlement -> { boolean b = Objects.equals(settlement.from, "B") && Objects.equals(settlement.to, "A"); return b; }).findFirst().orElse(null); assertNull(baSettlement); Settlement acSettlement = response.getSettlements().stream().filter(settlement -> { boolean b = Objects.equals(settlement.from, "C") && Objects.equals(settlement.to, "A"); return b; }).findFirst().orElse(null); assertNotNull(acSettlement); } }test- import org.junit.Test;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Objects;
- import java.util.Optional;
- import static junit.framework.TestCase.*;
- public class TreasuryTest {
- @Test
- public void Given_Empty_Transfer_Than_Empty_Result_Test() {
- TreasuryService treasuryService = new TreasuryService();
- TreasuryJob treasuryJob = treasuryService.calculate(List.of());
- assertEquals(0, treasuryJob.getSettlements().size());
- }
- @Test
- public void Correct_Settlement_Calculations_Single_Test() {
- ArrayList<Transfer> transfers = new ArrayList<>();
- transfers.add(new Transfer("A", "B", 10.0));
- TreasuryService treasuryService = new TreasuryService();
- TreasuryJob treasuryJob = treasuryService.calculate(transfers);
- assertEquals(1, treasuryJob.getSettlements().size());
- assertEquals("A", treasuryJob.getSettlements().get(0).from);
- assertEquals("B", treasuryJob.getSettlements().get(0).to);
- assertEquals(10.0, treasuryJob.getSettlements().get(0).amount);
- }
- @Test
- public void Correct_Settlement_Calculations_Multi_Test() {
- ArrayList<Transfer> transfers = new ArrayList<>();
- transfers.add(new Transfer("A", "B", 10.0));
- transfers.add(new Transfer("A", "B", 5.0));
- TreasuryService treasuryService = new TreasuryService();
- TreasuryJob treasuryJob = treasuryService.calculate(transfers);
- assertEquals(1, treasuryJob.getSettlements().size());
- assertEquals("A", treasuryJob.getSettlements().get(0).from);
- assertEquals("B", treasuryJob.getSettlements().get(0).to);
- assertEquals(15.0, treasuryJob.getSettlements().get(0).amount);
- }
- @Test
- public void Correct_Settlement_Calculations_Test() {
- ArrayList<Transfer> transfers = new ArrayList<>();
- transfers.add(new Transfer("A", "B", 10.0));
- transfers.add(new Transfer("B", "A", 5.0));
- TreasuryService treasuryService = new TreasuryService();
- TreasuryJob treasuryJob = treasuryService.calculate(transfers);
- assertEquals(1, treasuryJob.getSettlements().size());
- assertEquals("A", treasuryJob.getSettlements().get(0).from);
- assertEquals("B", treasuryJob.getSettlements().get(0).to);
- assertEquals(5.0, treasuryJob.getSettlements().get(0).amount);
- }
- @Test
- public void Correct_Settlement_Calculations_When_There_Are_Multiple_Transfers_Test() {
- ArrayList<Transfer> transfers = new ArrayList<>();
- transfers.add(new Transfer("A", "B", 20.0));
- transfers.add(new Transfer("B", "A", 5.0));
- transfers.add(new Transfer("A", "B", 10.0));
- transfers.add(new Transfer("B", "A", 5.0));
- transfers.add(new Transfer("B", "A", 5.0));
- TreasuryService treasuryService = new TreasuryService();
- TreasuryJob treasuryJob = treasuryService.calculate(transfers);
- assertEquals(1, treasuryJob.getSettlements().size());
- assertEquals("A", treasuryJob.getSettlements().get(0).from);
- assertEquals("B", treasuryJob.getSettlements().get(0).to);
- assertEquals(15.0, treasuryJob.getSettlements().get(0).amount);
- }
- @Test
- public void Correct_Settlement_Calculations_When_There_Are_Multiple_Accounts_Test() {
- ArrayList<Transfer> transfers = new ArrayList<>();
- transfers.add(new Transfer("A", "B", 20.0));
- transfers.add(new Transfer("B", "C", 20.0));
- transfers.add(new Transfer("C", "D", 20.0));
- transfers.add(new Transfer("B", "A", 10.0));
- transfers.add(new Transfer("C", "A", 10.0));
- transfers.add(new Transfer("C", "A", 10.0));
- transfers.add(new Transfer("D", "B", 10.0));
- TreasuryService treasuryService = new TreasuryService();
- TreasuryJob response = treasuryService.calculate(transfers);
- assertEquals(5, response.getSettlements().size());
- Settlement abSettlement = response.getSettlements().stream().filter(settlement -> {
- boolean b = Objects.equals(settlement.from, "A") && Objects.equals(settlement.to, "B");
- return b;
- }).findFirst().orElse(null);
- assertNotNull(abSettlement);
- assertEquals(10.0, abSettlement.amount);
- Settlement baSettlement = response.getSettlements().stream().filter(settlement -> {
- boolean b = Objects.equals(settlement.from, "B") && Objects.equals(settlement.to, "A");
- return b;
- }).findFirst().orElse(null);
- assertNull(baSettlement);
- Settlement acSettlement = response.getSettlements().stream().filter(settlement -> {
- boolean b = Objects.equals(settlement.from, "C") && Objects.equals(settlement.to, "A");
- return b;
- }).findFirst().orElse(null);
- assertNotNull(acSettlement);
- }
- }
Saw an error using the type instead of a variable to set legs. Added tests to test it all.
from dataclasses import dataclass @dataclass class Pet: name: str species: str gender: str age: int n_legs: int def have_birthday(self) -> int: self.age += 1 return self.age def define_n_legs(self, n_leg: int) -> None: self.n_legs = n_leg def define_gender(self, gender: str) -> None: self.gender = gender def change_species(self, new_species: str) -> None: self.species = new_species def display_info(self) -> None: s = f"{self.name} the {self.gender} {self.species}, age {self.age} has {self.n_legs} legs!" print(s) return s- from dataclasses import dataclass
- @dataclass
- class Pet:
- name: str
- species: str
- gender: str
- age: int
- n_legs: int
- def have_birthday(self) -> int:
- self.age += 1
- return self.age
- def define_n_legs(self, n_leg: int) -> None:
self.n_legs = int- self.n_legs = n_leg
- def define_gender(self, gender: str) -> None:
- self.gender = gender
- def change_species(self, new_species: str) -> None:
- self.species = new_species
- def display_info(self) -> None:
- s = f"{self.name} the {self.gender} {self.species}, age {self.age} has {self.n_legs} legs!"
- print(s)
- return s
import codewars_test as test # TODO Write tests import solution # or from solution import example def defaultPet(): return Pet("Bob", "Dog", "Male", 5, 4) # test.assert_equals(actual, expected, [optional] message) @test.describe("Example") def test_group(): @test.it("Dog") def test_case(): p = defaultPet() test.assert_equals("Bob the Male Dog, age 5 has 4 legs!", p.display_info()) @test.it("Growing Legs") def change_n_legs(): p = defaultPet() p.define_n_legs(6) test.assert_equals("Bob the Male Dog, age 5 has 6 legs!", p.display_info()) @test.it("Aging") def happy_birthday(): p = defaultPet() age = p.have_birthday() test.assert_equals(6, age) p.have_birthday() p.have_birthday() p.have_birthday() test.assert_equals("Bob the Male Dog, age 9 has 4 legs!", p.display_info()) @test.it("Gender Identity Matters") def assigned_at_birth(): p = defaultPet() p.define_gender("Female") test.assert_equals("Bob the Female Dog, age 5 has 4 legs!", p.display_info()) p.define_gender("Prefer not to Specify") test.assert_equals("Bob the Prefer not to Specify Dog, age 5 has 4 legs!", p.display_info()) @test.it("Pokemon Evolution") def miracle(): p = defaultPet() p.change_species("Cat") test.assert_equals("Bob the Male Cat, age 5 has 4 legs!", p.display_info())- import codewars_test as test
- # TODO Write tests
- import solution # or from solution import example
- def defaultPet():
- return Pet("Bob", "Dog", "Male", 5, 4)
- # test.assert_equals(actual, expected, [optional] message)
- @test.describe("Example")
- def test_group():
- @test.it("Dog")
- def test_case():
p = Pet("Bob", "Male", "Dog", 5, 4)test.assert_equals("Bob the Dog Male, age 5 has 4 legs!", p.display_info())- p = defaultPet()
- test.assert_equals("Bob the Male Dog, age 5 has 4 legs!", p.display_info())
- @test.it("Growing Legs")
- def change_n_legs():
- p = defaultPet()
- p.define_n_legs(6)
- test.assert_equals("Bob the Male Dog, age 5 has 6 legs!", p.display_info())
- @test.it("Aging")
- def happy_birthday():
- p = defaultPet()
- age = p.have_birthday()
- test.assert_equals(6, age)
- p.have_birthday()
- p.have_birthday()
- p.have_birthday()
- test.assert_equals("Bob the Male Dog, age 9 has 4 legs!", p.display_info())
- @test.it("Gender Identity Matters")
- def assigned_at_birth():
- p = defaultPet()
- p.define_gender("Female")
- test.assert_equals("Bob the Female Dog, age 5 has 4 legs!", p.display_info())
- p.define_gender("Prefer not to Specify")
- test.assert_equals("Bob the Prefer not to Specify Dog, age 5 has 4 legs!", p.display_info())
- @test.it("Pokemon Evolution")
- def miracle():
- p = defaultPet()
- p.change_species("Cat")
- test.assert_equals("Bob the Male Cat, age 5 has 4 legs!", p.display_info())
Interpolation with f strings on eval
public class Program { public static int loop(int repeat){ return repeat > 1 ? 1 + loop(repeat - 1) : 0; } }- public class Program {
- public static int loop(int repeat){
//Trivial caseif(repeat == 1)return 0;//The trick is this line of codereturn loop(repeat-1)+1;- return repeat > 1 ? 1 + loop(repeat - 1) : 0;
- }
- }
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; class SolutionTest { @Test void testSomething() { assertEquals(0, Program.loop(-1)); assertEquals(0, Program.loop(0)); assertEquals(0, Program.loop(1)); assertEquals(1, Program.loop(2)); assertEquals(2, Program.loop(3)); assertEquals(9, Program.loop(10)); } }- import org.junit.jupiter.api.Test;
- import static org.junit.jupiter.api.Assertions.assertEquals;
// TODO: Replace examples and use TDD by writing your own tests- class SolutionTest {
- @Test
- void testSomething() {
- assertEquals(0, Program.loop(-1));
- assertEquals(0, Program.loop(0));
- assertEquals(0, Program.loop(1));
- assertEquals(1, Program.loop(2));
- assertEquals(2, Program.loop(3));
- assertEquals(9, Program.loop(10));
- }
- }