()
| 498 | } |
| 499 | |
| 500 | func Example_mixed_writes() { |
| 501 | testCases := []struct { |
| 502 | startMode, endMode OutputMode |
| 503 | }{ |
| 504 | {UnsafeEscaped, SafeEscaped}, |
| 505 | {SafeEscaped, UnsafeEscaped}, |
| 506 | {UnsafeEscaped, SafeRaw}, |
| 507 | {SafeRaw, UnsafeEscaped}, |
| 508 | {SafeEscaped, SafeRaw}, |
| 509 | {SafeRaw, SafeEscaped}, |
| 510 | } |
| 511 | |
| 512 | doWritesFn := []func(*Buffer){ |
| 513 | // Noop |
| 514 | func(b *Buffer) {}, |
| 515 | func(b *Buffer) { b.WriteByte('a') }, |
| 516 | func(b *Buffer) { b.WriteRune('a') }, |
| 517 | func(b *Buffer) { b.WriteString("bc") }, |
| 518 | func(b *Buffer) { b.Write([]byte("bc")) }, |
| 519 | func(b *Buffer) { b.WriteString("safe‹unsafe›") }, |
| 520 | func(b *Buffer) { b.WriteByte('\n') }, |
| 521 | func(b *Buffer) { b.WriteRune('\n') }, |
| 522 | func(b *Buffer) { b.WriteString("\nx\ny\n") }, |
| 523 | func(b *Buffer) { b.Write([]byte("\nx\ny\n")) }, |
| 524 | } |
| 525 | |
| 526 | for i, tc := range testCases { |
| 527 | if i > 0 { |
| 528 | fmt.Println() |
| 529 | } |
| 530 | fmt.Println(tc.startMode, " -> ", tc.endMode) |
| 531 | for j, doWrites := range doWritesFn { |
| 532 | var b Buffer |
| 533 | b.SetMode(tc.startMode) |
| 534 | doWrites(&b) |
| 535 | for k, doWrites2 := range doWritesFn { |
| 536 | copy := b.clone() |
| 537 | copy.SetMode(tc.endMode) |
| 538 | doWrites2(copy) |
| 539 | var b2 Buffer |
| 540 | b2.SetMode(tc.endMode) |
| 541 | doWrites2(&b2) |
| 542 | fmt.Printf("fn%d+fn%d: %q (%q + %q)\n", j, k, copy.RedactableString(), b.RedactableString(), b2.RedactableString()) |
| 543 | } |
| 544 | } |
| 545 | } |
| 546 | |
| 547 | // Output: |
| 548 | // 0 -> 1 |
| 549 | // fn0+fn0: "" ("" + "") |
| 550 | // fn0+fn1: "a" ("" + "a") |
| 551 | // fn0+fn2: "a" ("" + "a") |
| 552 | // fn0+fn3: "bc" ("" + "bc") |
| 553 | // fn0+fn4: "bc" ("" + "bc") |
| 554 | // fn0+fn5: "safe?unsafe?" ("" + "safe?unsafe?") |
| 555 | // fn0+fn6: "\n" ("" + "\n") |
| 556 | // fn0+fn7: "\n" ("" + "\n") |
| 557 | // fn0+fn8: "\nx\ny\n" ("" + "\nx\ny\n") |
nothing calls this directly
no test coverage detected
searching dependent graphs…