Add test for man page creator
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/0a81160e Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/0a81160e Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/0a81160e Branch: refs/heads/markdown_v2 Commit: 0a81160e546cbc5b1422e90fe5a0bd89dfd4c901 Parents: 3561512 Author: Nick Wellnhofer <[email protected]> Authored: Sun Nov 9 21:47:29 2014 +0100 Committer: Nick Wellnhofer <[email protected]> Committed: Tue Dec 2 18:31:15 2014 +0100 ---------------------------------------------------------------------- compiler/src/CFCTest.c | 1 + compiler/src/CFCTest.h | 1 + compiler/src/CFCTestCMan.c | 107 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/0a81160e/compiler/src/CFCTest.c ---------------------------------------------------------------------- diff --git a/compiler/src/CFCTest.c b/compiler/src/CFCTest.c index 21cff48..1692f58 100644 --- a/compiler/src/CFCTest.c +++ b/compiler/src/CFCTest.c @@ -128,6 +128,7 @@ static const CFCTestBatch *const S_batches[] = { &CFCTEST_BATCH_FILE, &CFCTEST_BATCH_HIERARCHY, &CFCTEST_BATCH_PARSER, + &CFCTEST_BATCH_C_MAN, NULL }; http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/0a81160e/compiler/src/CFCTest.h ---------------------------------------------------------------------- diff --git a/compiler/src/CFCTest.h b/compiler/src/CFCTest.h index dbb3a17..f78e07f 100644 --- a/compiler/src/CFCTest.h +++ b/compiler/src/CFCTest.h @@ -155,6 +155,7 @@ CFCTest_set_file_times(const char *path, time_t time); extern const CFCTestBatch CFCTEST_BATCH_CLASS; extern const CFCTestBatch CFCTEST_BATCH_C_BLOCK; +extern const CFCTestBatch CFCTEST_BATCH_C_MAN; extern const CFCTestBatch CFCTEST_BATCH_DOCU_COMMENT; extern const CFCTestBatch CFCTEST_BATCH_FILE; extern const CFCTestBatch CFCTEST_BATCH_FILE_SPEC; http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/0a81160e/compiler/src/CFCTestCMan.c ---------------------------------------------------------------------- diff --git a/compiler/src/CFCTestCMan.c b/compiler/src/CFCTestCMan.c new file mode 100644 index 0000000..6544d01 --- /dev/null +++ b/compiler/src/CFCTestCMan.c @@ -0,0 +1,107 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <string.h> + +#define CFC_USE_TEST_MACROS +#include "CFCBase.h" +#include "CFCClass.h" +#include "CFCCMan.h" +#include "CFCDocuComment.h" +#include "CFCParcel.h" +#include "CFCTest.h" +#include "CFCUtil.h" + +#ifndef true + #define true 1 + #define false 0 +#endif + +static void +S_run_tests(CFCTest *test); + +const CFCTestBatch CFCTEST_BATCH_C_MAN = { + "Clownfish::CFC::Binding::C::Man", + 1, + S_run_tests +}; + +static void +S_run_tests(CFCTest *test) { + CFCParcel *parcel = CFCParcel_new("Neato", NULL, NULL, NULL); + CFCDocuComment *docu = CFCDocuComment_parse( + "/** Test man page creator.\n" + " * \n" + " * # Heading 1\n" + " * \n" + " * Paragraph: *emphasized*, **strong**, `code`.\n" + " * \n" + " * Paragraph: [link](http://example.com/).\n" + " * \n" + " * Code 1\n" + " * Code 2\n" + " * \n" + " * * List item 1\n" + " * * List item 1.1\n" + " * \n" + " * Paragraph in list\n" + " * \n" + " * Paragraph after list\n" + " */\n" + ); + CFCClass *klass + = CFCClass_create(parcel, "public", "Neato::Object", NULL, NULL, + docu, NULL, NULL, 0, 0); + char *man_page = CFCCMan_create_man_page(klass); + const char *expected_output = + ".TH Neato::Object 3\n" + ".SH NAME\n" + "Neato::Object \\- Test man page creator.\n" + ".SH DESCRIPTION\n" + ".SS\n" + "Heading 1\n" + "Paragraph: \\fIemphasized\\f[], \\fBstrong\\f[], \\FCcode\\F[]\\&.\n" + "\n" + "Paragraph: \n" + ".UR http://example.com/\n" + "link\n" + ".UE\n" + "\\&.\n" + ".IP\n" + ".nf\n" + ".fam C\n" + "Code 1\n" + "Code 2\n" + ".fam\n" + ".fi\n" + ".IP \\(bu\n" + "List item 1\n" + ".RS\n" + ".IP \\(bu\n" + "List item 1.1\n" + ".RE\n" + ".IP\n" + "Paragraph in list\n" + ".P\n" + "Paragraph after list\n"; + STR_EQ(test, man_page, expected_output, "create man page"); + + FREEMEM(man_page); + CFCBase_decref((CFCBase*)klass); + CFCBase_decref((CFCBase*)docu); + CFCBase_decref((CFCBase*)parcel); +} +
