package main import ( "fmt" "log" "mermaid-go/pkg/parser" "mermaid-go/pkg/renderer" ) func main() { fmt.Println("Testing Advanced Class Diagram Features:") // Test 1: Comments and Notes testCommentsAndNotes() fmt.Println() // Test 2: Enhanced Annotations testEnhancedAnnotations() fmt.Println() // Test 3: Direction control testDirection() fmt.Println() } func testCommentsAndNotes() { fmt.Println("--- Testing Comments and Notes ---") input := `classDiagram %% This is a comment class Animal { +name String +age int } note "This is a general note" note for Animal "This is a note for Animal class"` 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 testEnhancedAnnotations() { fmt.Println("--- Testing Enhanced Annotations ---") input := `classDiagram class Shape { <> +area() double +perimeter() double } class Animal { <> +name String +makeSound()* 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 testDirection() { fmt.Println("--- Testing Direction Control ---") input := `classDiagram direction TB class A class B A --> B` 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) }