Compare commits

...

3 Commits

Author SHA1 Message Date
Pit Friedrich 9112d9524f model fixation for commands and subagents 2026-07-25 20:36:40 +02:00
pitfriedrich 18a76b0350 Merge pull request 'feat: add CalcFunctionFactory for calculator operations (#13)' (#14) from ai/issue-13 into main
Reviewed-on: #14
2026-07-25 18:10:54 +00:00
Pit Friedrich 55e5cbeb0f feat: add CalcFunctionFactory for calculator operations (#13)
CI / build-and-test (pull_request) Successful in 16s
Callers pick an operation via the CalcOperation enum instead of
instantiating implementation classes directly.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-25 20:09:19 +02:00
6 changed files with 91 additions and 15 deletions
+1
View File
@@ -2,6 +2,7 @@
name: next-issue
description: Wählt das nächste zu bearbeitende Gitea-Issue und gibt nur die Kerndaten zurück.
tools: mcp__gitea__list_issues, mcp__gitea__issue_read
model: haiku
---
Finde das nächste offene Issue im Repo <owner>/<repo> mit Label `ai-ready`
und NICHT mit Label `ai-wip` oder `ai-blocked`.
+1
View File
@@ -6,6 +6,7 @@ allowed-tools: >
mcp__gitea__issue_read, mcp__gitea__issue_write,
mcp__gitea__label_read,
mcp__gitea__pull_request_write
model: opus
---
Bearbeite Gitea-Issue #$1 im aktuellen Repo. Schritt für Schritt:
@@ -1,25 +1,16 @@
package com.example;
import com.example.util.AddFunction;
import com.example.util.CalcFunction;
import com.example.util.DivideFunction;
import com.example.util.MultiplyFunction;
import com.example.util.PowerFunction;
import com.example.util.SubtractFunction;
import com.example.util.CalcFunctionFactory;
import com.example.util.CalcOperation;
public class LoopTestApplication {
static void main() {
System.out.println("============== Calculator =============");
CalcFunction add = new AddFunction();
System.out.println("ADDITION: " + add.calc(2, 5, 6));
CalcFunction subtract = new SubtractFunction();
System.out.println("SUBTRACTION: " + subtract.calc(2, 5, 6));
CalcFunction multiply = new MultiplyFunction();
System.out.println("MULTIPLICATION: " + multiply.calc(2, 5, 6));
CalcFunction divide = new DivideFunction();
System.out.println("DIVISION: " + divide.calc(2, 5, 6));
CalcFunction power = new PowerFunction();
System.out.println("POWER: " + power.calc(2, 5, 6));
for (CalcOperation operation : CalcOperation.values()) {
CalcFunction function = CalcFunctionFactory.create(operation);
System.out.println(operation + ": " + function.calc(2, 5, 6));
}
}
}
@@ -0,0 +1,20 @@
package com.example.util;
public final class CalcFunctionFactory {
private CalcFunctionFactory() {
}
public static CalcFunction create(CalcOperation operation) {
if (operation == null) {
throw new IllegalArgumentException("Operation must not be null");
}
return switch (operation) {
case ADD -> new AddFunction();
case SUBTRACT -> new SubtractFunction();
case MULTIPLY -> new MultiplyFunction();
case DIVIDE -> new DivideFunction();
case POWER -> new PowerFunction();
};
}
}
@@ -0,0 +1,10 @@
package com.example.util;
public enum CalcOperation {
ADD,
SUBTRACT,
MULTIPLY,
DIVIDE,
POWER
}
@@ -0,0 +1,53 @@
package com.example.util;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
class CalcFunctionFactoryTest {
@Test
void createsAddFunction() {
assertInstanceOf(AddFunction.class, CalcFunctionFactory.create(CalcOperation.ADD));
}
@Test
void createsSubtractFunction() {
assertInstanceOf(SubtractFunction.class, CalcFunctionFactory.create(CalcOperation.SUBTRACT));
}
@Test
void createsMultiplyFunction() {
assertInstanceOf(MultiplyFunction.class, CalcFunctionFactory.create(CalcOperation.MULTIPLY));
}
@Test
void createsDivideFunction() {
assertInstanceOf(DivideFunction.class, CalcFunctionFactory.create(CalcOperation.DIVIDE));
}
@Test
void createsPowerFunction() {
assertInstanceOf(PowerFunction.class, CalcFunctionFactory.create(CalcOperation.POWER));
}
@Test
void createsFunctionForEveryOperation() {
for (CalcOperation operation : CalcOperation.values()) {
assertNotNull(CalcFunctionFactory.create(operation), "No function for " + operation);
}
}
@Test
void createdFunctionCalculates() {
assertEquals(13.0, CalcFunctionFactory.create(CalcOperation.ADD).calc(2.0, 5.0, 6.0));
}
@Test
void rejectsNullOperation() {
assertThrows(IllegalArgumentException.class, () -> CalcFunctionFactory.create(null));
}
}