package main import ( "fmt" "log" "mermaid-go/pkg/parser" "mermaid-go/pkg/renderer" ) func main() { fmt.Println("Testing Enhanced Class Diagram Features:") // Test 1: Interface types testInterface() fmt.Println() // Test 2: Abstract classes testAbstractClass() fmt.Println() // Test 3: Method parameters and return types testMethodsAndParameters() fmt.Println() } func testInterface() { fmt.Println("--- Testing Interface ---") input := `classDiagram class Shape { <> +area() double +perimeter() double } Shape <|.. Circle Shape <|.. Rectangle` mermaidParser := parser.NewMermaidParser() diagram, err := mermaidParser.Parse(input) if err != nil { log.Printf("Failed to parse class diagram: %v", err) return } mermaidRenderer := renderer.NewMermaidRenderer() output, err := mermaidRenderer.Render(diagram) if err != nil { log.Printf("Failed to render class diagram: %v", err) return } fmt.Printf("Input:\n%s\n", input) fmt.Printf("Parsed and rendered:\n%s", output) } func testAbstractClass() { fmt.Println("--- Testing Abstract Class ---") input := `classDiagram class Animal { <> +name String +age int +makeSound()* void +move() void }` mermaidParser := parser.NewMermaidParser() diagram, err := mermaidParser.Parse(input) if err != nil { log.Printf("Failed to parse class diagram: %v", err) return } mermaidRenderer := renderer.NewMermaidRenderer() output, err := mermaidRenderer.Render(diagram) if err != nil { log.Printf("Failed to render class diagram: %v", err) return } fmt.Printf("Input:\n%s\n", input) fmt.Printf("Parsed and rendered:\n%s", output) } func testMethodsAndParameters() { fmt.Println("--- Testing Methods with Parameters ---") input := `classDiagram class Calculator { +add(a int, b int) int +subtract(a int, b int) int +multiply(a int, b int) int +divide(a int, b int) float -validateInput(value int) bool }` mermaidParser := parser.NewMermaidParser() diagram, err := mermaidParser.Parse(input) if err != nil { log.Printf("Failed to parse class diagram: %v", err) return } mermaidRenderer := renderer.NewMermaidRenderer() output, err := mermaidRenderer.Render(diagram) if err != nil { log.Printf("Failed to render class diagram: %v", err) return } fmt.Printf("Input:\n%s\n", input) fmt.Printf("Parsed and rendered:\n%s", output) }