#!/usr/bin/env python3 # # Copyright (C) 2014 The Android Open Source Project # # 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.
from common.archs import archs_list from file_format.checker.parser import parse_checker_stream from file_format.checker.struct import CheckerFile, TestCase, TestStatement, TestExpression
import io import unittest
CheckerException = SystemExit
class CheckerParser_PrefixTest(unittest.TestCase):
def test_StatementVariants(self):
self.assertParsesTo( """
/// CHECK-START: Example Group
/// CHECK: foo1
/// CHECK: foo2
/// CHECK-NEXT: foo3
/// CHECK-NEXT: foo4
/// CHECK-NOT: bar
/// CHECK-DAG: abc
/// CHECK-DAG: def
/// CHECK-EVAL: x > y
/// CHECK-IF: x < y
/// CHECK-ELIF: x == y
/// CHECK-ELSE:
/// CHECK-FI: """,
[("Example Group", [("foo1", TestStatement.Variant.IN_ORDER),
("foo2", TestStatement.Variant.IN_ORDER),
("foo3", TestStatement.Variant.NEXT_LINE),
("foo4", TestStatement.Variant.NEXT_LINE),
("bar", TestStatement.Variant.NOT),
("abc", TestStatement.Variant.DAG),
("def", TestStatement.Variant.DAG),
("x > y", TestStatement.Variant.EVAL),
("x < y", TestStatement.Variant.IF),
("x == y", TestStatement.Variant.ELIF),
(None, TestStatement.Variant.ELSE),
(None, TestStatement.Variant.FI)])])
def test_NoContentStatements(self): with self.assertRaises(CheckerException):
self.parse( """
/// CHECK-START: Example Group
/// CHECK-ELSE: foo """) with self.assertRaises(CheckerException):
self.parse( """
/// CHECK-START: Example Group
/// CHECK-FI: foo """)
class CheckerParser_SuffixTests(unittest.TestCase):
NOARCH_BLOCK = """
/// CHECK-START: Group
/// CHECK: foo
/// CHECK-NEXT: bar
/// CHECK-NOT: baz
/// CHECK-DAG: yoyo
/// CHECK-EVAL: x > y
/// CHECK-IF: x < y
/// CHECK-ELIF: x == y
/// CHECK-ELSE:
/// CHECK-FI: """
ARCH_BLOCK = """
/// CHECK-START-{test_arch}: Group
/// CHECK: foo
/// CHECK-NEXT: bar
/// CHECK-NOT: baz
/// CHECK-DAG: yoyo
/// CHECK-EVAL: x > y
/// CHECK-IF: x < y
/// CHECK-ELIF: x == y
/// CHECK-ELSE:
/// CHECK-FI: """
def test_NonArchTests(self): for arch in [None] + archs_list:
checker_file = self.parse(self.NOARCH_BLOCK)
self.assertEqual(len(checker_file.test_cases), 1)
self.assertEqual(len(checker_file.test_cases[0].statements), 9)
def test_IgnoreNonTargetArch(self): for target_arch in archs_list: for test_arch in [a for a in archs_list if a != target_arch]:
checker_text = self.ARCH_BLOCK.format(test_arch=test_arch)
checker_file = self.parse(checker_text)
self.assertEqual(len(checker_file.test_cases), 1)
self.assertEqual(len(checker_file.test_cases_for_arch(test_arch)), 1)
self.assertEqual(len(checker_file.test_cases_for_arch(target_arch)), 0)
def test_Arch(self): for arch in archs_list:
checker_text = self.ARCH_BLOCK.format(test_arch=arch)
checker_file = self.parse(checker_text)
self.assertEqual(len(checker_file.test_cases), 1)
self.assertEqual(len(checker_file.test_cases_for_arch(arch)), 1)
self.assertEqual(len(checker_file.test_cases[0].statements), 9)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.