1*7249d1a6SKrzysztof Kosiński# Copyright 2015 Google Inc. All Rights Reserved. 2*7249d1a6SKrzysztof Kosiński# 3*7249d1a6SKrzysztof Kosiński# Licensed under the Apache License, Version 2.0 (the "License"); 4*7249d1a6SKrzysztof Kosiński# you may not use this file except in compliance with the License. 5*7249d1a6SKrzysztof Kosiński# You may obtain a copy of the License at 6*7249d1a6SKrzysztof Kosiński# 7*7249d1a6SKrzysztof Kosiński# http://www.apache.org/licenses/LICENSE-2.0 8*7249d1a6SKrzysztof Kosiński# 9*7249d1a6SKrzysztof Kosiński# Unless required by applicable law or agreed to in writing, software 10*7249d1a6SKrzysztof Kosiński# distributed under the License is distributed on an "AS IS" BASIS, 11*7249d1a6SKrzysztof Kosiński# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*7249d1a6SKrzysztof Kosiński# See the License for the specific language governing permissions and 13*7249d1a6SKrzysztof Kosiński# limitations under the License. 14*7249d1a6SKrzysztof Kosiński"""Tests for yapf.format_token.""" 15*7249d1a6SKrzysztof Kosiński 16*7249d1a6SKrzysztof Kosińskiimport unittest 17*7249d1a6SKrzysztof Kosiński 18*7249d1a6SKrzysztof Kosińskifrom lib2to3 import pytree 19*7249d1a6SKrzysztof Kosińskifrom lib2to3.pgen2 import token 20*7249d1a6SKrzysztof Kosiński 21*7249d1a6SKrzysztof Kosińskifrom yapf.yapflib import format_token 22*7249d1a6SKrzysztof Kosiński 23*7249d1a6SKrzysztof Kosiński 24*7249d1a6SKrzysztof Kosińskiclass TabbedContinuationAlignPaddingTest(unittest.TestCase): 25*7249d1a6SKrzysztof Kosiński 26*7249d1a6SKrzysztof Kosiński def testSpace(self): 27*7249d1a6SKrzysztof Kosiński align_style = 'SPACE' 28*7249d1a6SKrzysztof Kosiński 29*7249d1a6SKrzysztof Kosiński pad = format_token._TabbedContinuationAlignPadding(0, align_style, 2) 30*7249d1a6SKrzysztof Kosiński self.assertEqual(pad, '') 31*7249d1a6SKrzysztof Kosiński 32*7249d1a6SKrzysztof Kosiński pad = format_token._TabbedContinuationAlignPadding(2, align_style, 2) 33*7249d1a6SKrzysztof Kosiński self.assertEqual(pad, ' ' * 2) 34*7249d1a6SKrzysztof Kosiński 35*7249d1a6SKrzysztof Kosiński pad = format_token._TabbedContinuationAlignPadding(5, align_style, 2) 36*7249d1a6SKrzysztof Kosiński self.assertEqual(pad, ' ' * 5) 37*7249d1a6SKrzysztof Kosiński 38*7249d1a6SKrzysztof Kosiński def testFixed(self): 39*7249d1a6SKrzysztof Kosiński align_style = 'FIXED' 40*7249d1a6SKrzysztof Kosiński 41*7249d1a6SKrzysztof Kosiński pad = format_token._TabbedContinuationAlignPadding(0, align_style, 4) 42*7249d1a6SKrzysztof Kosiński self.assertEqual(pad, '') 43*7249d1a6SKrzysztof Kosiński 44*7249d1a6SKrzysztof Kosiński pad = format_token._TabbedContinuationAlignPadding(2, align_style, 4) 45*7249d1a6SKrzysztof Kosiński self.assertEqual(pad, '\t') 46*7249d1a6SKrzysztof Kosiński 47*7249d1a6SKrzysztof Kosiński pad = format_token._TabbedContinuationAlignPadding(5, align_style, 4) 48*7249d1a6SKrzysztof Kosiński self.assertEqual(pad, '\t' * 2) 49*7249d1a6SKrzysztof Kosiński 50*7249d1a6SKrzysztof Kosiński def testVAlignRight(self): 51*7249d1a6SKrzysztof Kosiński align_style = 'VALIGN-RIGHT' 52*7249d1a6SKrzysztof Kosiński 53*7249d1a6SKrzysztof Kosiński pad = format_token._TabbedContinuationAlignPadding(0, align_style, 4) 54*7249d1a6SKrzysztof Kosiński self.assertEqual(pad, '') 55*7249d1a6SKrzysztof Kosiński 56*7249d1a6SKrzysztof Kosiński pad = format_token._TabbedContinuationAlignPadding(2, align_style, 4) 57*7249d1a6SKrzysztof Kosiński self.assertEqual(pad, '\t') 58*7249d1a6SKrzysztof Kosiński 59*7249d1a6SKrzysztof Kosiński pad = format_token._TabbedContinuationAlignPadding(4, align_style, 4) 60*7249d1a6SKrzysztof Kosiński self.assertEqual(pad, '\t') 61*7249d1a6SKrzysztof Kosiński 62*7249d1a6SKrzysztof Kosiński pad = format_token._TabbedContinuationAlignPadding(5, align_style, 4) 63*7249d1a6SKrzysztof Kosiński self.assertEqual(pad, '\t' * 2) 64*7249d1a6SKrzysztof Kosiński 65*7249d1a6SKrzysztof Kosiński 66*7249d1a6SKrzysztof Kosińskiclass FormatTokenTest(unittest.TestCase): 67*7249d1a6SKrzysztof Kosiński 68*7249d1a6SKrzysztof Kosiński def testSimple(self): 69*7249d1a6SKrzysztof Kosiński tok = format_token.FormatToken(pytree.Leaf(token.STRING, "'hello world'")) 70*7249d1a6SKrzysztof Kosiński self.assertEqual( 71*7249d1a6SKrzysztof Kosiński "FormatToken(name=DOCSTRING, value='hello world', column=0, " 72*7249d1a6SKrzysztof Kosiński "lineno=0, splitpenalty=0)", str(tok)) 73*7249d1a6SKrzysztof Kosiński self.assertTrue(tok.is_string) 74*7249d1a6SKrzysztof Kosiński 75*7249d1a6SKrzysztof Kosiński tok = format_token.FormatToken(pytree.Leaf(token.COMMENT, '# A comment')) 76*7249d1a6SKrzysztof Kosiński self.assertEqual( 77*7249d1a6SKrzysztof Kosiński 'FormatToken(name=COMMENT, value=# A comment, column=0, ' 78*7249d1a6SKrzysztof Kosiński 'lineno=0, splitpenalty=0)', str(tok)) 79*7249d1a6SKrzysztof Kosiński self.assertTrue(tok.is_comment) 80*7249d1a6SKrzysztof Kosiński 81*7249d1a6SKrzysztof Kosiński def testIsMultilineString(self): 82*7249d1a6SKrzysztof Kosiński tok = format_token.FormatToken(pytree.Leaf(token.STRING, '"""hello"""')) 83*7249d1a6SKrzysztof Kosiński self.assertTrue(tok.is_multiline_string) 84*7249d1a6SKrzysztof Kosiński 85*7249d1a6SKrzysztof Kosiński tok = format_token.FormatToken(pytree.Leaf(token.STRING, 'r"""hello"""')) 86*7249d1a6SKrzysztof Kosiński self.assertTrue(tok.is_multiline_string) 87*7249d1a6SKrzysztof Kosiński 88*7249d1a6SKrzysztof Kosiński 89*7249d1a6SKrzysztof Kosińskiif __name__ == '__main__': 90*7249d1a6SKrzysztof Kosiński unittest.main() 91