| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- 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 {
- <<interface>>
- +area() double
- +perimeter() double
- }
- class Animal {
- <<abstract>>
- +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)
- }
|