| 524 | } |
| 525 | |
| 526 | func TestPathMarkersAligned(t *testing.T) { |
| 527 | start := MustParseSVGPath("L1 0L0 1z") |
| 528 | mid := MustParseSVGPath("M-1 0A1 1 0 0 0 1 0z") |
| 529 | end := MustParseSVGPath("L-1 0L0 1z") |
| 530 | var tts = []struct { |
| 531 | p string |
| 532 | rs []string |
| 533 | }{ |
| 534 | {"M10 0", []string{"M10 0L11 0L10 1z"}}, |
| 535 | {"M10 0L20 10", []string{"M10 0L10.707 0.707L9.293 0.707z", "M20 10L19.293 9.293L19.293 10.707z"}}, |
| 536 | {"L10 0L20 10", []string{"L1 0L0 1z", "M9.076 -0.383A1 1 0 0 0 10.924 0.383z", "M20 10L19.293 9.293L19.293 10.707z"}}, |
| 537 | {"L10 0L20 10z", []string{"L0.230 -0.973L0.973 0.230z", "M9.076 -0.383A1 1 0 0 0 10.924 0.383z", "M20.585 9.189A1 1 0 0 0 19.415 10.811z", "L-0.230 0.973L0.973 0.230z"}}, |
| 538 | {"M10 0L20 10M30 0L40 10", []string{"M10 0L10.707 0.707L9.293 0.707z", "M19.293 9.293A1 1 0 0 0 20.707 10.707z", "M29.293 -0.707A1 1 0 0 0 30.707 0.707z", "M40 10L39.293 9.293L39.293 10.707z"}}, |
| 539 | {"Q0 10 10 10Q20 10 20 0", []string{"L0 1L-1 0z", "M9 10A1 1 0 0 0 11 10z", "M20 0L20 1L21 0z"}}, |
| 540 | {"C0 6.66667 3.33333 10 10 10C16.66667 10 20 6.66667 20 0", []string{"L0 1L-1 0z", "M9 10A1 1 0 0 0 11 10z", "M20 0L20 1L21 0z"}}, |
| 541 | {"A10 10 0 0 0 10 10A10 10 0 0 0 20 0", []string{"L0 1L-1 0z", "M9 10A1 1 0 0 0 11 10z", "M20 0L20 1L21 0z"}}, |
| 542 | } |
| 543 | origEpsilon := Epsilon |
| 544 | for _, tt := range tts { |
| 545 | t.Run(tt.p, func(t *testing.T) { |
| 546 | Epsilon = origEpsilon |
| 547 | p := MustParseSVGPath(tt.p) |
| 548 | ps := p.Markers(start, mid, end, true) |
| 549 | Epsilon = 1e-3 |
| 550 | if len(ps) != len(tt.rs) { |
| 551 | origs := []string{} |
| 552 | for _, p := range ps { |
| 553 | origs = append(origs, p.String()) |
| 554 | } |
| 555 | test.T(t, strings.Join(origs, "\n"), strings.Join(tt.rs, "\n")) |
| 556 | } else { |
| 557 | for i, p := range ps { |
| 558 | test.T(t, p, MustParseSVGPath(tt.rs[i])) |
| 559 | } |
| 560 | } |
| 561 | }) |
| 562 | } |
| 563 | Epsilon = origEpsilon |
| 564 | } |
| 565 | |
| 566 | func TestPathSplit(t *testing.T) { |
| 567 | var tts = []struct { |