diff options
Diffstat (limited to 'gemini/gemtext/parse_line_test.go')
| -rw-r--r-- | gemini/gemtext/parse_line_test.go | 51 | 
1 files changed, 51 insertions, 0 deletions
| diff --git a/gemini/gemtext/parse_line_test.go b/gemini/gemtext/parse_line_test.go index a07fa3b..82b0c28 100644 --- a/gemini/gemtext/parse_line_test.go +++ b/gemini/gemtext/parse_line_test.go @@ -57,6 +57,57 @@ func TestParseLinkLine(t *testing.T) {  	}  } +func TestParsePromptLine(t *testing.T) { +	tests := []struct { +		input string +		url   string +		label string +	}{ +		{ +			input: "=: gemini.ctrl-c.club/~tjp/ home page\r\n", +			url:   "gemini.ctrl-c.club/~tjp/", +			label: "home page", +		}, +		{ +			input: "=: gemi.dev/\n", +			url:   "gemi.dev/", +		}, +		{ +			input: "=: /gemlog/foobar 2023-01-13 - Foo Bar\n", +			url:   "/gemlog/foobar", +			label: "2023-01-13 - Foo Bar", +		}, +	} + +	for _, test := range tests { +		t.Run(test.input, func(t *testing.T) { +			line := gemtext.ParseLine([]byte(test.input)) +			if line == nil { +				t.Fatal("ParseLine() returned nil line") +			} +			if string(line.Raw()) != string(test.input) { +				t.Error("Raw() does not match input") +			} + +			if line.Type() != gemtext.LineTypePrompt{ +				t.Errorf("expected LineTypePrompt, got %d", line.Type()) +			} +			link, ok := line.(gemtext.PromptLine) +			if !ok { +				t.Fatalf("expected a PromptLine, got %T", line) +			} + +			if link.URL() != test.url { +				t.Errorf("expected url %q, got %q", test.url, link.URL()) +			} + +			if link.Label() != test.label { +				t.Errorf("expected label %q, got %q", test.label, link.Label()) +			} +		}) +	} +} +  func TestParsePreformatToggleLine(t *testing.T) {  	tests := []struct {  		input   string | 
