test_class_advanced.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "mermaid-go/pkg/parser"
  6. "mermaid-go/pkg/renderer"
  7. )
  8. func main() {
  9. fmt.Println("Testing Advanced Class Diagram Features:")
  10. // Test 1: Comments and Notes
  11. testCommentsAndNotes()
  12. fmt.Println()
  13. // Test 2: Enhanced Annotations
  14. testEnhancedAnnotations()
  15. fmt.Println()
  16. // Test 3: Direction control
  17. testDirection()
  18. fmt.Println()
  19. }
  20. func testCommentsAndNotes() {
  21. fmt.Println("--- Testing Comments and Notes ---")
  22. input := `classDiagram
  23. %% This is a comment
  24. class Animal {
  25. +name String
  26. +age int
  27. }
  28. note "This is a general note"
  29. note for Animal "This is a note for Animal class"`
  30. mermaidParser := parser.NewMermaidParser()
  31. diagram, err := mermaidParser.Parse(input)
  32. if err != nil {
  33. log.Printf("Failed to parse class diagram: %v", err)
  34. return
  35. }
  36. mermaidRenderer := renderer.NewMermaidRenderer()
  37. output, err := mermaidRenderer.Render(diagram)
  38. if err != nil {
  39. log.Printf("Failed to render class diagram: %v", err)
  40. return
  41. }
  42. fmt.Printf("Input:\n%s\n", input)
  43. fmt.Printf("Parsed and rendered:\n%s", output)
  44. }
  45. func testEnhancedAnnotations() {
  46. fmt.Println("--- Testing Enhanced Annotations ---")
  47. input := `classDiagram
  48. class Shape {
  49. <<interface>>
  50. +area() double
  51. +perimeter() double
  52. }
  53. class Animal {
  54. <<abstract>>
  55. +name String
  56. +makeSound()* void
  57. }`
  58. mermaidParser := parser.NewMermaidParser()
  59. diagram, err := mermaidParser.Parse(input)
  60. if err != nil {
  61. log.Printf("Failed to parse class diagram: %v", err)
  62. return
  63. }
  64. mermaidRenderer := renderer.NewMermaidRenderer()
  65. output, err := mermaidRenderer.Render(diagram)
  66. if err != nil {
  67. log.Printf("Failed to render class diagram: %v", err)
  68. return
  69. }
  70. fmt.Printf("Input:\n%s\n", input)
  71. fmt.Printf("Parsed and rendered:\n%s", output)
  72. }
  73. func testDirection() {
  74. fmt.Println("--- Testing Direction Control ---")
  75. input := `classDiagram
  76. direction TB
  77. class A
  78. class B
  79. A --> B`
  80. mermaidParser := parser.NewMermaidParser()
  81. diagram, err := mermaidParser.Parse(input)
  82. if err != nil {
  83. log.Printf("Failed to parse class diagram: %v", err)
  84. return
  85. }
  86. mermaidRenderer := renderer.NewMermaidRenderer()
  87. output, err := mermaidRenderer.Render(diagram)
  88. if err != nil {
  89. log.Printf("Failed to render class diagram: %v", err)
  90. return
  91. }
  92. fmt.Printf("Input:\n%s\n", input)
  93. fmt.Printf("Parsed and rendered:\n%s", output)
  94. }