test_html.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:7k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: test_html.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:16:09  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: test_html.cpp,v 1000.1 2004/06/01 19:16:09 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Author:  Vladimir Ivanov
  35.  *
  36.  * File Description:  Play around with the HTML library
  37.  *
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <corelib/ncbiapp.hpp>
  41. #include <corelib/ncbienv.hpp>
  42. #include <html/html.hpp>
  43. #include <html/page.hpp>
  44. #include <test/test_assert.h>  /* This header must go last */
  45. USING_NCBI_SCOPE;
  46. /////////////////////////////////
  47. // SpecialChars test
  48. //
  49. static void s_TEST_SpecialChars(void)
  50. {
  51.     CHTMLPage page("Simple test page"); 
  52.     page.AppendChild(new CHTML_nbsp(2));
  53.     page.AppendChild(new CHTML_gt);
  54.     page.AppendChild(new CHTML_lt);
  55.     page.AppendChild(new CHTML_quot);
  56.     page.AppendChild(new CHTML_amp);
  57.     page.AppendChild(new CHTML_copy);
  58.     page.AppendChild(new CHTML_reg);
  59.     page.AppendChild(new CHTMLSpecialChar("#177","+/-"));
  60.     page.Print(cout, CNCBINode::eHTML);
  61.     cout << endl;
  62.     page.Print(cout, CNCBINode::ePlainText);
  63.     cout << endl;
  64. }
  65. /////////////////////////////////
  66. // Tags test
  67. //
  68. static void s_TEST_Tags(void)
  69. {
  70.     CNodeRef html, head, body;
  71.     html = new CHTML_html;
  72.     head = new CHTML_head;
  73.     body = new CHTML_body;
  74.     html->AppendChild(head); 
  75.     html->AppendChild(body); 
  76.     head->AppendChild(
  77.           new CHTML_meta(CHTML_meta::eName,"author","I'm"));
  78.     head->AppendChild(
  79.           new CHTML_meta(CHTML_meta::eHttpEquiv,"refresh","3; URL=www.ru"));
  80.     body->AppendChild(
  81.           new CHTML_p(new CHTML_i("paragraph")));
  82.     body->AppendChild(
  83.           new CHTML_img("url","alt"));
  84.     body->AppendChild(
  85.           new CHTMLDualNode(new CHTML_p("Example1"),"Example1n"));
  86.     body->AppendChild(
  87.           new CHTMLDualNode("<p>Example2</p>","Example2n"));
  88.     body->AppendChild(
  89.           new CHTML_script("text/javascript","http://localhost/sample.js"));
  90.     CHTML_script* script = new CHTML_script("text/vbscript");
  91.     script->AppendScript("Place VB1 script here");
  92.     script->AppendScript("Place VB2 script here");
  93.     body->AppendChild(script);
  94.     html->Print(cout);
  95.     cout << endl << endl;
  96.     html->Print(cout,CNCBINode::ePlainText);
  97.     cout << endl;
  98. }
  99. /////////////////////////////////
  100. // Table test
  101. //
  102. static void s_TEST_Table(void)
  103. {
  104.     cout << endl;
  105.     CHTMLPage page("Table test"); 
  106.     CHTML_table* table1 = new CHTML_table;
  107.     CHTML_table* table2 = new CHTML_table;
  108.     page.AppendChild(table1);
  109.     page.AppendChild(new CHTML_br);
  110.     page.AppendChild(table2);
  111.     table1->SetPlainSeparators("| "," | "," |",'-',CHTML_table::ePrintRowSep);
  112.     for ( unsigned row = 0; row < 12; ++row ) {
  113.         for ( unsigned col = 0; col < 4; ++col ) {
  114.              CHTML_tc* cell = table1->Cell(row, col, CHTML_table::eAnyCell, 1, 1 );
  115.              cell->AppendPlainText('@'+NStr::UIntToString(row)+','+NStr::UIntToString(col));
  116.         }
  117.     }
  118.     CHTML_tc* cell;
  119.     cell = table2->Cell(0, 0, CHTML_table::eAnyCell, 2, 1 );
  120.     cell->AppendPlainText("0,0 - 2x1");
  121.     cell = table2->Cell(1, 1, CHTML_table::eAnyCell, 1, 1 );
  122.     cell->AppendPlainText("1,1 - 1x1");
  123.     cell = table2->Cell(2, 2, CHTML_table::eAnyCell, 1, 1 );
  124.     cell->AppendPlainText("2,2 - 1x1");
  125.     cell = table2->Cell(4, 1, CHTML_table::eAnyCell, 1, 1 );
  126.     cell->AppendPlainText("4,1 - 1x1");
  127.     page.Print(cout, CNCBINode::ePlainText);
  128.     cout << endl;
  129. }
  130. ////////////////////////////////
  131. // Test application
  132. //
  133. class CTestApplication : public CNcbiApplication
  134. {
  135. public:
  136.     virtual void Init(void);
  137.     virtual int  Run (void);
  138. };
  139. void CTestApplication::Init(void)
  140. {
  141.     // Set error posting and tracing on maximum
  142.     SetDiagTrace(eDT_Enable);
  143.     SetDiagPostFlag(eDPF_All);
  144.     SetDiagPostLevel(eDiag_Info);
  145. }
  146. int CTestApplication::Run(void)
  147. {
  148.     cout << "---------------------------------------------" << endl;
  149.     s_TEST_SpecialChars();
  150.     cout << "---------------------------------------------" << endl;
  151.     s_TEST_Tags();
  152.     cout << "---------------------------------------------" << endl;
  153.     s_TEST_Table();
  154.     cout << "---------------------------------------------" << endl;
  155.     return 0;
  156. }
  157.   
  158. ///////////////////////////////////
  159. // APPLICATION OBJECT  and  MAIN
  160. //
  161. static CTestApplication theTestApplication;
  162. int main(int argc, const char* argv[])
  163. {
  164.     // Execute main application function
  165.     return theTestApplication.AppMain(argc, argv, 0, eDS_Default, 0);
  166. }
  167. /*
  168.  * ===========================================================================
  169.  * $Log: test_html.cpp,v $
  170.  * Revision 1000.1  2004/06/01 19:16:09  gouriano
  171.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6
  172.  *
  173.  * Revision 1.6  2004/05/17 21:00:08  gorelenk
  174.  * Added include of PCH ncbi_pch.hpp
  175.  *
  176.  * Revision 1.5  2002/04/16 19:05:21  ivanov
  177.  * Centralize threatment of assert() in tests.
  178.  * Added #include <test/test_assert.h>. CVS log moved to end of file.
  179.  *
  180.  * Revision 1.4  2002/01/17 23:40:28  ivanov
  181.  * Added test to print HTML tables in plain text mode
  182.  *
  183.  * Revision 1.3  2001/08/14 16:59:08  ivanov
  184.  * Moved test for JavaScript popup menu in individual file "test_jsmenu"
  185.  *
  186.  * Revision 1.2  2001/07/16 13:57:43  ivanov
  187.  * Added test for JavaScript popup menus (CHTMLPopupMenu).
  188.  * Chanded application skeleton, now it based on CNCBIApplication.
  189.  *
  190.  * Revision 1.1  2001/06/08 19:05:27  ivanov
  191.  * Initialization. Test application for html library
  192.  *
  193.  * ===========================================================================
  194.  */