diff options
author | Jordan Rupprecht <rupprecht@google.com> | 2019-05-14 21:58:59 +0000 |
---|---|---|
committer | Jordan Rupprecht <rupprecht@google.com> | 2019-05-14 21:58:59 +0000 |
commit | 46054fed6aeeabea27b9ba4a3ef81ab5ff9b9645 (patch) | |
tree | d12279f80b5729d0324f066002c838baa736fbd2 /clangd/include-mapping/test.py | |
parent | 5026a9a16d10a2edf09be54c7225f49b5789c69e (diff) | |
parent | 0eb1ac6d1df856f065717226ef34d00679a211fe (diff) |
Creating branches/google/stable and tags/google/stable/2019-05-14 from r360103upstream/stable
git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/branches/google/stable@360714 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'clangd/include-mapping/test.py')
-rwxr-xr-x | clangd/include-mapping/test.py | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/clangd/include-mapping/test.py b/clangd/include-mapping/test.py new file mode 100755 index 00000000..10725769 --- /dev/null +++ b/clangd/include-mapping/test.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python +#===- test.py - ---------------------------------------------*- python -*--===# +# +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# +#===------------------------------------------------------------------------===# + +from gen_std import ParseSymbolPage, ParseIndexPage + +import unittest + +class TestStdGen(unittest.TestCase): + + def testParseIndexPage(self): + html = """ + <a href="abs.html" title="abs"><tt>abs()</tt></a> (int) <br> + <a href="complex/abs.html" title="abs"><tt>abs<>()</tt></a> (std::complex) <br> + <a href="acos.html" title="acos"><tt>acos()</tt></a> <br> + <a href="acosh.html" title="acosh"><tt>acosh()</tt></a> <span class="t-mark-rev">(since C++11)</span> <br> + <a href="as_bytes.html" title="as bytes"><tt>as_bytes<>()</tt></a> <span class="t-mark-rev t-since-cxx20">(since C++20)</span> <br> + """ + + actual = ParseIndexPage(html) + expected = [ + ("abs", "abs.html", True), + ("abs", "complex/abs.html", True), + ("acos", "acos.html", False), + ("acosh", "acosh.html", False), + ("as_bytes", "as_bytes.html", False), + ] + self.assertEqual(len(actual), len(expected)) + for i in range(0, len(actual)): + self.assertEqual(expected[i][0], actual[i][0]) + self.assertTrue(actual[i][1].endswith(expected[i][1])) + self.assertEqual(expected[i][2], actual[i][2]) + + + def testParseSymbolPage_SingleHeader(self): + # Defined in header <cmath> + html = """ + <table class="t-dcl-begin"><tbody> + <tr class="t-dsc-header"> + <td> <div>Defined in header <code><a href="cmath.html" title="cmath"><cmath></a></code> + </div></td> + <td></td> + <td></td> + </tr> + <tr class="t-dcl"> + <td>void foo()</td> + <td>this is matched</td> + </tr> +</tbody></table> +""" + self.assertEqual(ParseSymbolPage(html, 'foo'), set(['<cmath>'])) + + + def testParseSymbolPage_MulHeaders(self): + # Defined in header <cstddef> + # Defined in header <cstdio> + # Defined in header <cstdlib> + html = """ +<table class="t-dcl-begin"><tbody> + <tr class="t-dsc-header"> + <td> <div>Defined in header <code><a href="cstddef.html" title="cstddef"><cstddef></a></code> + </div></td> + <td></td> + <td></td> + </tr> + <tr class="t-dcl"> + <td>void bar()</td> + <td>this mentions foo, but isn't matched</td> + </tr> + <tr class="t-dsc-header"> + <td> <div>Defined in header <code><a href="cstdio.html" title="cstdio"><cstdio></a></code> + </div></td> + <td></td> + <td></td> + </tr> + <tr class="t-dsc-header"> + <td> <div>Defined in header <code><a href=".cstdlib.html" title="ccstdlib"><cstdlib></a></code> + </div></td> + <td></td> + <td></td> + </tr> + <tr class="t-dcl"> + <td>void foo()</td> + <td>this is matched</td> + </tr> +</tbody></table> +""" + self.assertEqual(ParseSymbolPage(html, "foo"), + set(['<cstdio>', '<cstdlib>'])) + + + def testParseSymbolPage_MulHeadersInSameDiv(self): + # Multile <code> blocks in a Div. + # Defined in header <algorithm> + # Defined in header <utility> + html = """ +<table class="t-dcl-begin"><tbody> +<tr class="t-dsc-header"> +<td><div> + Defined in header <code><a href="../header/algorithm.html" title="cpp/header/algorithm"><algorithm></a></code><br> + Defined in header <code><a href="../header/utility.html" title="cpp/header/utility"><utility></a></code> +</div></td> +<td></td> +</tr> +<tr class="t-dcl"> + <td>void foo()</td> + <td>this is matched</td> +</tr> +</tbody></table> +""" + self.assertEqual(ParseSymbolPage(html, "foo"), + set(['<algorithm>', '<utility>'])) + + +if __name__ == '__main__': + unittest.main() |