Index: third_party/closure_linter/closure_linter/statetracker_test.py |
diff --git a/third_party/closure_linter/closure_linter/statetracker_test.py b/third_party/closure_linter/closure_linter/statetracker_test.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1ec9e0bb4f005940d7b106c32646b99e4a29da31 |
--- /dev/null |
+++ b/third_party/closure_linter/closure_linter/statetracker_test.py |
@@ -0,0 +1,122 @@ |
+#!/usr/bin/env python |
+# |
+# Copyright 2012 The Closure Linter Authors. All Rights Reserved. |
+# Licensed 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. |
+ |
+"""Unit tests for the statetracker module.""" |
+ |
+# Allow non-Google copyright |
+# pylint: disable=g-bad-file-header |
+ |
+__author__ = ('nnaze@google.com (Nathan Naze)') |
+ |
+ |
+ |
+import unittest as googletest |
+ |
+from closure_linter import javascripttokens |
+from closure_linter import statetracker |
+from closure_linter import testutil |
+ |
+ |
+class _FakeDocFlag(object): |
+ |
+ def __repr__(self): |
+ return '@%s %s' % (self.flag_type, self.name) |
+ |
+ |
+class IdentifierTest(googletest.TestCase): |
+ |
+ def testJustIdentifier(self): |
+ a = javascripttokens.JavaScriptToken( |
+ 'abc', javascripttokens.JavaScriptTokenType.IDENTIFIER, 'abc', 1) |
+ |
+ st = statetracker.StateTracker() |
+ st.HandleToken(a, None) |
+ |
+ |
+class DocCommentTest(googletest.TestCase): |
+ |
+ @staticmethod |
+ def _MakeDocFlagFake(flag_type, name=None): |
+ flag = _FakeDocFlag() |
+ flag.flag_type = flag_type |
+ flag.name = name |
+ return flag |
+ |
+ def testDocFlags(self): |
+ comment = statetracker.DocComment(None) |
+ |
+ a = self._MakeDocFlagFake('param', 'foo') |
+ comment.AddFlag(a) |
+ |
+ b = self._MakeDocFlagFake('param', '') |
+ comment.AddFlag(b) |
+ |
+ c = self._MakeDocFlagFake('param', 'bar') |
+ comment.AddFlag(c) |
+ |
+ self.assertEquals( |
+ ['foo', 'bar'], |
+ comment.ordered_params) |
+ |
+ self.assertEquals( |
+ [a, b, c], |
+ comment.GetDocFlags()) |
+ |
+ def testInvalidate(self): |
+ comment = statetracker.DocComment(None) |
+ |
+ self.assertFalse(comment.invalidated) |
+ self.assertFalse(comment.IsInvalidated()) |
+ |
+ comment.Invalidate() |
+ |
+ self.assertTrue(comment.invalidated) |
+ self.assertTrue(comment.IsInvalidated()) |
+ |
+ def testSuppressionOnly(self): |
+ comment = statetracker.DocComment(None) |
+ |
+ self.assertFalse(comment.SuppressionOnly()) |
+ comment.AddFlag(self._MakeDocFlagFake('suppress')) |
+ self.assertTrue(comment.SuppressionOnly()) |
+ comment.AddFlag(self._MakeDocFlagFake('foo')) |
+ self.assertFalse(comment.SuppressionOnly()) |
+ |
+ def testRepr(self): |
+ comment = statetracker.DocComment(None) |
+ comment.AddFlag(self._MakeDocFlagFake('param', 'foo')) |
+ comment.AddFlag(self._MakeDocFlagFake('param', 'bar')) |
+ |
+ self.assertEquals( |
+ '<DocComment: [\'foo\', \'bar\'], [@param foo, @param bar]>', |
+ repr(comment)) |
+ |
+ def testDocFlagParam(self): |
+ comment = self._ParseComment(""" |
+ /** |
+ * @param {string} [name] Name of customer. |
+ */""") |
+ flag = comment.GetFlag('param') |
+ self.assertEquals('string', flag.type) |
+ self.assertEquals('[name]', flag.name) |
+ |
+ def _ParseComment(self, script): |
+ """Parse a script that contains one comment and return it.""" |
+ _, comments = testutil.ParseFunctionsAndComments(script) |
+ self.assertEquals(1, len(comments)) |
+ return comments[0] |
+ |
+if __name__ == '__main__': |
+ googletest.main() |