censorbib/src/decode_test.go
Philipp Winter 4be5f7bfb2 Add new build tool.
bibliogra.py requires Python 2, which is a pain to deal with.  This
commit adds a Go tool that compiles CensorBib from BibTeX to HTML.  The
tool does the bare minimum and is quite strict in the BibTeX format it
expects.
2024-03-10 12:08:10 -05:00

81 lines
1.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"testing"
)
func TestToString(t *testing.T) {
testCases := []conversion{
{
from: "Title",
to: "Title",
},
{
from: "This is a {Title}",
to: "This is a Title",
},
{
from: "This is a {Title}",
to: "This is a Title",
},
{
from: `{\#h00t}: Censorship Resistant Microblogging`,
to: `#h00t: Censorship Resistant Microblogging`,
},
{
from: "``Good'' Worms and Human Rights",
to: "“Good” Worms and Human Rights",
},
{
from: "An Analysis of {China}'s ``{Great Cannon}''",
to: "An Analysis of Chinas “Great Cannon”",
},
{
from: `lib$\cdot$erate, (n):`,
to: `lib·erate, (n):`,
},
{
from: "Well -- Exploring the {Great} {Firewall}'s Poisoned {DNS}",
to: "Well Exploring the Great Firewalls Poisoned DNS",
},
}
for _, test := range testCases {
to := decodeTitle(test.from)
if to != test.to {
t.Errorf("Expected\n%s\ngot\n%s", test.to, to)
}
}
}
func TestDecodeAuthors(t *testing.T) {
testCases := []conversion{
{ // Multiple authors should be separated by commas.
from: "John Doe and Jane Doe",
to: "John Doe, Jane Doe",
},
{ // Single authors should remain as-is.
from: "John Doe",
to: "John Doe",
},
{ // Single-name authors should remain as-is.
from: "John and Jane",
to: "John, Jane",
},
{ // Non-ASCII characters should be unaffected.
from: "Jóhn Doe",
to: "Jóhn Doe",
},
{ // Apostrophes should be replaced with the right single quote.
from: "John O'Brian",
to: "John OBrian",
},
}
for _, test := range testCases {
to := decodeAuthors(test.from)
if to != test.to {
t.Errorf("Expected\n%s\ngot\n%s", test.to, to)
}
}
}