;;; plantuml-indentation-notes-test.el --- PlantUML Mode indentation tests -*- lexical-binding: t; -*- ;; Author: René Schmelzer ;; Maintainer: Carlo Sciolla (skuro) ;; URL: https://github.com/skuro/plantuml-mode ;;; Commentary: ;; Test indentation of note elements. ;; Notes are used in almost all diagrams, but not all types of notes ;; are supported in every diagram type. ;;; Code: (ert-deftest plantuml-test-block-indentation/note-simple () "Test correct indentation of a simple note block." (plantuml-test-indent-block " note: single line note note multi line note end note " " note: single line note note multi line note end note " )) (ert-deftest plantuml-test-block-indentation/note-left-right () "Test correct indentation of a note left/right block." (plantuml-test-indent-block " (*) --> \"Some Activity\" note right: This activity has to be defined \"Some Activity\" --> (*) note right This note is on several lines end note (*) --> \"Some Activity\" note left: This activity has to be defined \"Some Activity\" --> (*) note left This note is on several lines end note " " (*) --> \"Some Activity\" note right: This activity has to be defined \"Some Activity\" --> (*) note right This note is on several lines end note (*) --> \"Some Activity\" note left: This activity has to be defined \"Some Activity\" --> (*) note left This note is on several lines end note " )) (ert-deftest plantuml-test-block-indentation/note-xxx-of () "Test correct indentation of a note xxx of block. plantuml.com: You can use the note left of, note right of, note top of, note bottom of keywords to define notes related to a single object." (plantuml-test-indent-block " note right of Alice: This is displayed right of Alice. note left of Alice #aqua This is displayed left of Alice. end note note left of Alice: This is displayed left of Alice. note right of Alice #aqua This is displayed right of Alice. end note note right of (Use) A note can also be on several lines end note note left of HTTP : Web Service only note right of [First Component] A note can also be on several lines end note " " note right of Alice: This is displayed right of Alice. note left of Alice #aqua This is displayed left of Alice. end note note left of Alice: This is displayed left of Alice. note right of Alice #aqua This is displayed right of Alice. end note note right of (Use) A note can also be on several lines end note note left of HTTP : Web Service only note right of [First Component] A note can also be on several lines end note " )) (ert-deftest plantuml-test-block-indentation/note-on-link () "Test correct indentation of a note xxx of block. plantuml.com: “You can also use note left on link, note right on link, note top on link, note bottom on link if you want to change the relative position of the note with the label.”" (plantuml-test-indent-block " class Dummy Dummy --> Foo : A link note on link #red: note that is red Dummy --> Foo2 : Another link note right on link #blue this is my note on right link and in blue end note note left on link #00FFFF this is my note on left link and in color as number end note " " class Dummy Dummy --> Foo : A link note on link #red: note that is red Dummy --> Foo2 : Another link note right on link #blue this is my note on right link and in blue end note note left on link #00FFFF this is my note on left link and in color as number end note " )) (ert-deftest plantuml-test-block-indentation/note-over () "Test correct indentation of a note-over block." (plantuml-test-indent-block " note over Alice: This is displayed over Alice. note over Alice, Bob #FFAAAA: This is displayed over Bob and Alice. note over Bob, Alice This is yet another example of a long note. end note " " note over Alice: This is displayed over Alice. note over Alice, Bob #FFAAAA: This is displayed over Bob and Alice. note over Bob, Alice This is yet another example of a long note. end note " )) ;; Here we have an inconsistency (again) in plantuml syntax ;; single line ‘note as …’ does not contain a ?: ;; ;; (ert-deftest plantuml-test-block-indentation/note-as () ;; "Test correct indentation of a note-as block." ;; (plantuml-test-indent-block ;; " ;; :Main Admin: as Admin ;; (Use the application) as (Use) ;; User -> (Start) ;; User --> (Use) ;; Admin ---> (Use) ;; note right of Admin : This is an example. ;; note right of (Use) ;; A note can also ;; be on several lines ;; end note ;; note \"This note is connected to several objects.\" as N2 #RED ;; (Start) .. N2 ;; N2 .. (Use) ;; note as N3 #blue ;; This note is connected ;; to several objects as well. ;; end note ;; (Start) .. N3 ;; N3 .. Admin ;; " ;; " ;; :Main Admin: as Admin ;; (Use the application) as (Use) ;; User -> (Start) ;; User --> (Use) ;; Admin ---> (Use) ;; note right of Admin : This is an example. ;; note right of (Use) ;; A note can also ;; be on several lines ;; end note ;; note \"This note is connected to several objects.\" as N2 #RED ;; (Start) .. N2 ;; N2 .. (Use) ;; note as N3 #blue ;; This note is connected ;; to several objects as well. ;; end note ;; (Start) .. N3 ;; N3 .. Admin ;; " ;; )) (ert-deftest plantuml-test-block-indentation/note-floating () "Test correct indentation of a floating note block." (plantuml-test-indent-block " floating note left: This is a note :foo2; floating note right This note is on several //lines// and can contain HTML ==== * Calling the method \"\"foo()\"\" is prohibited end note " " floating note left: This is a note :foo2; floating note right This note is on several //lines// and can contain HTML ==== * Calling the method \"\"foo()\"\" is prohibited end note " )) (ert-deftest plantuml-test-block-indentation/note-h-r-note () "Test correct indentation of a [hr]note block." (plantuml-test-indent-block " caller -> server : conReq rnote over caller : idle hnote over caller : idle caller <- server : conConf rnote over server r as rectangle h as hexagon endrnote hnote over server r as rectangle h as hexagon endrnote " " caller -> server : conReq rnote over caller : idle hnote over caller : idle caller <- server : conConf rnote over server r as rectangle h as hexagon endrnote hnote over server r as rectangle h as hexagon endrnote " )) (ert-deftest plantuml-test-block-indentation/note-creole-html () "Test correct indentation of a note block with creole/html." (plantuml-test-indent-block " participant Alice participant \"The **Famous** Bob\" as Bob Alice -> Bob : hello --there-- ... Some ~~long delay~~ ... Bob -> Alice : ok note left This is **bold** This is //italics// This is \"\"monospaced\"\" This is --stroked-- This is __underlined__ This is ~~waved~~ end note Alice -> Bob : A //well formatted// message note right of Alice This is displayed __left of__ Alice. end note note left of Bob This is displayed **left of Alice Bob**. end note note over Alice, Bob This is hosted by end note " " participant Alice participant \"The **Famous** Bob\" as Bob Alice -> Bob : hello --there-- ... Some ~~long delay~~ ... Bob -> Alice : ok note left This is **bold** This is //italics// This is \"\"monospaced\"\" This is --stroked-- This is __underlined__ This is ~~waved~~ end note Alice -> Bob : A //well formatted// message note right of Alice This is displayed __left of__ Alice. end note note left of Bob This is displayed **left of Alice Bob**. end note note over Alice, Bob This is hosted by end note " )) ;;; plantuml-indentation-notes-test.el ends here