test_class.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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 Enhanced Class Diagram Features:")
  10. // Test 1: Interface types
  11. testInterface()
  12. fmt.Println()
  13. // Test 2: Abstract classes
  14. testAbstractClass()
  15. fmt.Println()
  16. // Test 3: Method parameters and return types
  17. testMethodsAndParameters()
  18. fmt.Println()
  19. }
  20. func testInterface() {
  21. fmt.Println("--- Testing Interface ---")
  22. input := `classDiagram
  23. class Shape {
  24. <<interface>>
  25. +area() double
  26. +perimeter() double
  27. }
  28. Shape <|.. Circle
  29. Shape <|.. Rectangle`
  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 testAbstractClass() {
  46. fmt.Println("--- Testing Abstract Class ---")
  47. input := `classDiagram
  48. class Animal {
  49. <<abstract>>
  50. +name String
  51. +age int
  52. +makeSound()* void
  53. +move() void
  54. }`
  55. mermaidParser := parser.NewMermaidParser()
  56. diagram, err := mermaidParser.Parse(input)
  57. if err != nil {
  58. log.Printf("Failed to parse class diagram: %v", err)
  59. return
  60. }
  61. mermaidRenderer := renderer.NewMermaidRenderer()
  62. output, err := mermaidRenderer.Render(diagram)
  63. if err != nil {
  64. log.Printf("Failed to render class diagram: %v", err)
  65. return
  66. }
  67. fmt.Printf("Input:\n%s\n", input)
  68. fmt.Printf("Parsed and rendered:\n%s", output)
  69. }
  70. func testMethodsAndParameters() {
  71. fmt.Println("--- Testing Methods with Parameters ---")
  72. input := `classDiagram
  73. class Calculator {
  74. +add(a int, b int) int
  75. +subtract(a int, b int) int
  76. +multiply(a int, b int) int
  77. +divide(a int, b int) float
  78. -validateInput(value int) bool
  79. }`
  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. }