blob: ce0592cfee2a4a37f1f0b1394ee38aa479c2518e [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package docgen
import (
"go.fuchsia.dev/fuchsia/tools/cppdocgen/clangdoc"
"reflect"
"testing"
)
func TestExtractCommentHeading1(t *testing.T) {
h, r := extractCommentHeading1([]clangdoc.CommentInfo{})
if len(h) != 0 || len(r) != 0 {
t.Errorf("Expected no heading for empty comment.")
}
contentNoComment := []clangdoc.CommentInfo{
{Kind: "TextComment", Text: " Not a heading 1"},
{Kind: "TextComment", Text: " NextLine"},
}
h, r = extractCommentHeading1(contentNoComment)
if len(h) != 0 || !reflect.DeepEqual(contentNoComment, r) {
t.Errorf("Expected no heading")
}
contentComment := []clangdoc.CommentInfo{
{Kind: "TextComment", Text: " # A heading 1"},
{Kind: "TextComment", Text: " Next line"},
}
h, r = extractCommentHeading1(contentComment)
if h != "# A heading 1" || r[0].Text != " Next line" {
t.Errorf("Expected heading")
}
nested := []clangdoc.CommentInfo{
{
Kind: "FullComment",
Children: []clangdoc.CommentInfo{
{
Kind: "ParagraphComment",
Children: []clangdoc.CommentInfo{
{
Kind: "TextComment",
Text: " # This has a heading",
},
{
Kind: "TextComment",
Text: " Next line",
},
},
},
{
Kind: "ParagraphComment",
Children: []clangdoc.CommentInfo{
{
Kind: "TextComment",
Text: " Third line",
},
},
},
},
},
}
// Generate the expected result with the same structure but the first line removed.
expected := make([]clangdoc.CommentInfo, len(nested))
copy(expected, nested)
firstParaChildren := expected[0].Children[0].Children
firstParaChildren = firstParaChildren[1:]
h, r = extractCommentHeading1(nested)
if h != "# This has a heading" || !reflect.DeepEqual(expected, nested) {
t.Errorf("Expected:\n %v\nGot\n %v", expected, r)
}
}
func TestFileSourceLink(t *testing.T) {
writeSettings := WriteSettings{
LibName: "mylib",
BuildRelSourceRoot: "../..",
BuildRelIncludeDir: "../../src/sdk",
RepoBaseUrl: "https://example.com/src/",
}
link := writeSettings.fileSourceLink("../../sdk/lib/foo.h")
expectedLink := "https://example.com/src/sdk/lib/foo.h"
if link != expectedLink {
t.Errorf("Expected '%s' got '%s'\n", expectedLink, link)
}
}