From 621e49bb465f500cc46d47e39e828cf76d6381d7 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 24 Jul 2018 14:35:44 +0200 Subject: update vendor --- .../x/text/secure/bidirule/bidirule9.0.0_test.go | 668 +++++++++++++++++++++ 1 file changed, 668 insertions(+) create mode 100644 vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0_test.go (limited to 'vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0_test.go') diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0_test.go b/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0_test.go new file mode 100644 index 0000000..008874e --- /dev/null +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0_test.go @@ -0,0 +1,668 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.10 + +package bidirule + +import ( + "golang.org/x/text/transform" + "golang.org/x/text/unicode/bidi" +) + +var testCases = [][]ruleTest{ + // Go-specific rules. + // Invalid UTF-8 is invalid. + 0: []ruleTest{{ + in: "", + dir: bidi.LeftToRight, + }, { + in: "\x80", + dir: bidi.LeftToRight, + err: ErrInvalid, + n: 0, + }, { + in: "\xcc", + dir: bidi.LeftToRight, + err: ErrInvalid, + n: 0, + }, { + in: "abc\x80", + dir: bidi.LeftToRight, + err: ErrInvalid, + n: 3, + }, { + in: "abc\xcc", + dir: bidi.LeftToRight, + err: ErrInvalid, + n: 3, + }, { + in: "abc\xccdef", + dir: bidi.LeftToRight, + err: ErrInvalid, + n: 3, + }, { + in: "\xccdef", + dir: bidi.LeftToRight, + err: ErrInvalid, + n: 0, + }, { + in: strR + "\x80", + dir: bidi.RightToLeft, + err: ErrInvalid, + n: len(strR), + }, { + in: strR + "\xcc", + dir: bidi.RightToLeft, + err: ErrInvalid, + n: len(strR), + }, { + in: strAL + "\xcc" + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: len(strAL), + }, { + in: "\xcc" + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 0, + }}, + + // Rule 2.1: The first character must be a character with Bidi property L, + // R, or AL. If it has the R or AL property, it is an RTL label; if it has + // the L property, it is an LTR label. + 1: []ruleTest{{ + in: strL, + dir: bidi.LeftToRight, + }, { + in: strR, + dir: bidi.RightToLeft, + }, { + in: strAL, + dir: bidi.RightToLeft, + }, { + in: strAN, + dir: bidi.RightToLeft, + err: ErrInvalid, + }, { + in: strEN, + dir: bidi.LeftToRight, + err: nil, // not an RTL string + }, { + in: strES, + dir: bidi.LeftToRight, + err: nil, // not an RTL string + }, { + in: strET, + dir: bidi.LeftToRight, + err: nil, // not an RTL string + }, { + in: strCS, + dir: bidi.LeftToRight, + err: nil, // not an RTL string + }, { + in: strNSM, + dir: bidi.LeftToRight, + err: nil, // not an RTL string + }, { + in: strBN, + dir: bidi.LeftToRight, + err: nil, // not an RTL string + }, { + in: strB, + dir: bidi.LeftToRight, + err: nil, // not an RTL string + }, { + in: strS, + dir: bidi.LeftToRight, + err: nil, // not an RTL string + }, { + in: strWS, + dir: bidi.LeftToRight, + err: nil, // not an RTL string + }, { + in: strON, + dir: bidi.LeftToRight, + err: nil, // not an RTL string + }, { + in: strEN + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 3, + }, { + in: strES + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 2, + }, { + in: strET + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 1, + }, { + in: strCS + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 1, + }, { + in: strNSM + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 2, + }, { + in: strBN + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 3, + }, { + in: strB + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 3, + }, { + in: strS + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 1, + }, { + in: strWS + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 1, + }, { + in: strON + strR, + dir: bidi.RightToLeft, + err: ErrInvalid, + n: 1, + }}, + + // Rule 2.2: In an RTL label, only characters with the Bidi properties R, + // AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed. + 2: []ruleTest{{ + in: strR + strR + strAL, + dir: bidi.RightToLeft, + }, { + in: strR + strAL + strR, + dir: bidi.RightToLeft, + }, { + in: strR + strAN + strAL, + dir: bidi.RightToLeft, + }, { + in: strR + strEN + strR, + dir: bidi.RightToLeft, + }, { + in: strR + strES + strR, + dir: bidi.RightToLeft, + }, { + in: strR + strCS + strR, + dir: bidi.RightToLeft, + }, { + in: strR + strET + strAL, + dir: bidi.RightToLeft, + }, { + in: strR + strON + strR, + dir: bidi.RightToLeft, + }, { + in: strR + strBN + strR, + dir: bidi.RightToLeft, + }, { + in: strR + strNSM + strAL, + dir: bidi.RightToLeft, + }, { + in: strR + strL + strR, + dir: bidi.RightToLeft, + n: len(strR), + err: ErrInvalid, + }, { + in: strR + strB + strR, + dir: bidi.RightToLeft, + n: len(strR), + err: ErrInvalid, + }, { + in: strR + strS + strAL, + dir: bidi.RightToLeft, + n: len(strR), + err: ErrInvalid, + }, { + in: strR + strWS + strAL, + dir: bidi.RightToLeft, + n: len(strR), + err: ErrInvalid, + }, { + in: strAL + strR + strAL, + dir: bidi.RightToLeft, + }, { + in: strAL + strAL + strR, + dir: bidi.RightToLeft, + }, { + in: strAL + strAN + strAL, + dir: bidi.RightToLeft, + }, { + in: strAL + strEN + strR, + dir: bidi.RightToLeft, + }, { + in: strAL + strES + strR, + dir: bidi.RightToLeft, + }, { + in: strAL + strCS + strR, + dir: bidi.RightToLeft, + }, { + in: strAL + strET + strAL, + dir: bidi.RightToLeft, + }, { + in: strAL + strON + strR, + dir: bidi.RightToLeft, + }, { + in: strAL + strBN + strR, + dir: bidi.RightToLeft, + }, { + in: strAL + strNSM + strAL, + dir: bidi.RightToLeft, + }, { + in: strAL + strL + strR, + dir: bidi.RightToLeft, + n: len(strAL), + err: ErrInvalid, + }, { + in: strAL + strB + strR, + dir: bidi.RightToLeft, + n: len(strAL), + err: ErrInvalid, + }, { + in: strAL + strS + strAL, + dir: bidi.RightToLeft, + n: len(strAL), + err: ErrInvalid, + }, { + in: strAL + strWS + strAL, + dir: bidi.RightToLeft, + n: len(strAL), + err: ErrInvalid, + }}, + + // Rule 2.3: In an RTL label, the end of the label must be a character with + // Bidi property R, AL, EN, or AN, followed by zero or more characters with + // Bidi property NSM. + 3: []ruleTest{{ + in: strR + strNSM, + dir: bidi.RightToLeft, + }, { + in: strR + strR, + dir: bidi.RightToLeft, + }, { + in: strR + strAL + strNSM, + dir: bidi.RightToLeft, + }, { + in: strR + strEN + strNSM + strNSM, + dir: bidi.RightToLeft, + }, { + in: strR + strAN, + dir: bidi.RightToLeft, + }, { + in: strR + strES + strNSM, + dir: bidi.RightToLeft, + n: len(strR + strES + strNSM), + err: ErrInvalid, + }, { + in: strR + strCS + strNSM + strNSM, + dir: bidi.RightToLeft, + n: len(strR + strCS + strNSM + strNSM), + err: ErrInvalid, + }, { + in: strR + strET, + dir: bidi.RightToLeft, + n: len(strR + strET), + err: ErrInvalid, + }, { + in: strR + strON + strNSM, + dir: bidi.RightToLeft, + n: len(strR + strON + strNSM), + err: ErrInvalid, + }, { + in: strR + strBN + strNSM + strNSM, + dir: bidi.RightToLeft, + n: len(strR + strBN + strNSM + strNSM), + err: ErrInvalid, + }, { + in: strR + strL + strNSM, + dir: bidi.RightToLeft, + n: len(strR), + err: ErrInvalid, + }, { + in: strR + strB + strNSM + strNSM, + dir: bidi.RightToLeft, + n: len(strR), + err: ErrInvalid, + }, { + in: strR + strS, + dir: bidi.RightToLeft, + n: len(strR), + err: ErrInvalid, + }, { + in: strR + strWS, + dir: bidi.RightToLeft, + n: len(strR), + err: ErrInvalid, + }, { + in: strAL + strNSM, + dir: bidi.RightToLeft, + }, { + in: strAL + strR, + dir: bidi.RightToLeft, + }, { + in: strAL + strAL + strNSM, + dir: bidi.RightToLeft, + }, { + in: strAL + strEN + strNSM + strNSM, + dir: bidi.RightToLeft, + }, { + in: strAL + strAN, + dir: bidi.RightToLeft, + }, { + in: strAL + strES + strNSM, + dir: bidi.RightToLeft, + n: len(strAL + strES + strNSM), + err: ErrInvalid, + }, { + in: strAL + strCS + strNSM + strNSM, + dir: bidi.RightToLeft, + n: len(strAL + strCS + strNSM + strNSM), + err: ErrInvalid, + }, { + in: strAL + strET, + dir: bidi.RightToLeft, + n: len(strAL + strET), + err: ErrInvalid, + }, { + in: strAL + strON + strNSM, + dir: bidi.RightToLeft, + n: len(strAL + strON + strNSM), + err: ErrInvalid, + }, { + in: strAL + strBN + strNSM + strNSM, + dir: bidi.RightToLeft, + n: len(strAL + strBN + strNSM + strNSM), + err: ErrInvalid, + }, { + in: strAL + strL + strNSM, + dir: bidi.RightToLeft, + n: len(strAL), + err: ErrInvalid, + }, { + in: strAL + strB + strNSM + strNSM, + dir: bidi.RightToLeft, + n: len(strAL), + err: ErrInvalid, + }, { + in: strAL + strS, + dir: bidi.RightToLeft, + n: len(strAL), + err: ErrInvalid, + }, { + in: strAL + strWS, + dir: bidi.RightToLeft, + n: len(strAL), + err: ErrInvalid, + }}, + + // Rule 2.4: In an RTL label, if an EN is present, no AN may be present, + // and vice versa. + 4: []ruleTest{{ + in: strR + strEN + strAN, + dir: bidi.RightToLeft, + n: len(strR + strEN), + err: ErrInvalid, + }, { + in: strR + strAN + strEN + strNSM, + dir: bidi.RightToLeft, + n: len(strR + strAN), + err: ErrInvalid, + }, { + in: strAL + strEN + strAN, + dir: bidi.RightToLeft, + n: len(strAL + strEN), + err: ErrInvalid, + }, { + in: strAL + strAN + strEN + strNSM, + dir: bidi.RightToLeft, + n: len(strAL + strAN), + err: ErrInvalid, + }}, + + // Rule 2.5: In an LTR label, only characters with the Bidi properties L, + // EN, ES, CS, ET, ON, BN, or NSM are allowed. + 5: []ruleTest{{ + in: strL + strL + strL, + dir: bidi.LeftToRight, + }, { + in: strL + strEN + strL, + dir: bidi.LeftToRight, + }, { + in: strL + strES + strL, + dir: bidi.LeftToRight, + }, { + in: strL + strCS + strL, + dir: bidi.LeftToRight, + }, { + in: strL + strET + strL, + dir: bidi.LeftToRight, + }, { + in: strL + strON + strL, + dir: bidi.LeftToRight, + }, { + in: strL + strBN + strL, + dir: bidi.LeftToRight, + }, { + in: strL + strNSM + strL, + dir: bidi.LeftToRight, + }, { + in: strL + strR + strL, + dir: bidi.RightToLeft, + n: len(strL), + err: ErrInvalid, + }, { + in: strL + strAL + strL, + dir: bidi.RightToLeft, + n: len(strL), + err: ErrInvalid, + }, { + in: strL + strAN + strL, + dir: bidi.RightToLeft, + n: len(strL), + err: ErrInvalid, + }, { + in: strL + strB + strL, + dir: bidi.LeftToRight, + n: len(strL + strAN + strL), + err: nil, + }, { + in: strL + strB + strL + strR, + dir: bidi.RightToLeft, + n: len(strL + strB + strL), + err: ErrInvalid, + }, { + in: strL + strS + strL, + dir: bidi.LeftToRight, + n: len(strL + strS + strL), + err: nil, + }, { + in: strL + strS + strL + strR, + dir: bidi.RightToLeft, + n: len(strL + strS + strL), + err: ErrInvalid, + }, { + in: strL + strWS + strL, + dir: bidi.LeftToRight, + n: len(strL + strWS + strL), + err: nil, + }, { + in: strL + strWS + strL + strR, + dir: bidi.RightToLeft, + n: len(strL + strWS + strL), + err: ErrInvalid, + }}, + + // Rule 2.6: In an LTR label, the end of the label must be a character with + // Bidi property L or EN, followed by zero or more characters with Bidi + // property NSM. + 6: []ruleTest{{ + in: strL, + dir: bidi.LeftToRight, + }, { + in: strL + strNSM, + dir: bidi.LeftToRight, + }, { + in: strL + strNSM + strNSM, + dir: bidi.LeftToRight, + }, { + in: strL + strEN, + dir: bidi.LeftToRight, + }, { + in: strL + strEN + strNSM, + dir: bidi.LeftToRight, + }, { + in: strL + strEN + strNSM + strNSM, + dir: bidi.LeftToRight, + }, { + in: strL + strES, + dir: bidi.LeftToRight, + n: len(strL + strES), + err: nil, + }, { + in: strL + strES + strR, + dir: bidi.RightToLeft, + n: len(strL + strES), + err: ErrInvalid, + }, { + in: strL + strCS, + dir: bidi.LeftToRight, + n: len(strL + strCS), + err: nil, + }, { + in: strL + strCS + strR, + dir: bidi.RightToLeft, + n: len(strL + strCS), + err: ErrInvalid, + }, { + in: strL + strET, + dir: bidi.LeftToRight, + n: len(strL + strET), + err: nil, + }, { + in: strL + strET + strR, + dir: bidi.RightToLeft, + n: len(strL + strET), + err: ErrInvalid, + }, { + in: strL + strON, + dir: bidi.LeftToRight, + n: len(strL + strON), + err: nil, + }, { + in: strL + strON + strR, + dir: bidi.RightToLeft, + n: len(strL + strON), + err: ErrInvalid, + }, { + in: strL + strBN, + dir: bidi.LeftToRight, + n: len(strL + strBN), + err: nil, + }, { + in: strL + strBN + strR, + dir: bidi.RightToLeft, + n: len(strL + strBN), + err: ErrInvalid, + }, { + in: strL + strR, + dir: bidi.RightToLeft, + n: len(strL), + err: ErrInvalid, + }, { + in: strL + strAL, + dir: bidi.RightToLeft, + n: len(strL), + err: ErrInvalid, + }, { + in: strL + strAN, + dir: bidi.RightToLeft, + n: len(strL), + err: ErrInvalid, + }, { + in: strL + strB, + dir: bidi.LeftToRight, + n: len(strL + strB), + err: nil, + }, { + in: strL + strB + strR, + dir: bidi.RightToLeft, + n: len(strL + strB), + err: ErrInvalid, + }, { + in: strL + strB, + dir: bidi.LeftToRight, + n: len(strL + strB), + err: nil, + }, { + in: strL + strB + strR, + dir: bidi.RightToLeft, + n: len(strL + strB), + err: ErrInvalid, + }, { + in: strL + strB, + dir: bidi.LeftToRight, + n: len(strL + strB), + err: nil, + }, { + in: strL + strB + strR, + dir: bidi.RightToLeft, + n: len(strL + strB), + err: ErrInvalid, + }}, + + // Incremental processing. + 9: []ruleTest{{ + in: "e\u0301", // é + dir: bidi.LeftToRight, + + pSrc: 2, + nSrc: 1, + err0: transform.ErrShortSrc, + }, { + in: "e\u1000f", // é + dir: bidi.LeftToRight, + + pSrc: 3, + nSrc: 1, + err0: transform.ErrShortSrc, + }, { + // Remain invalid once invalid. + in: strR + "ab", + dir: bidi.RightToLeft, + n: len(strR), + err: ErrInvalid, + + pSrc: len(strR) + 1, + nSrc: len(strR), + err0: ErrInvalid, + }, { + // Short destination + in: "abcdefghij", + dir: bidi.LeftToRight, + + pSrc: 10, + szDst: 5, + nSrc: 5, + err0: transform.ErrShortDst, + }, { + // Short destination splitting input rune + in: "e\u0301", + dir: bidi.LeftToRight, + + pSrc: 3, + szDst: 2, + nSrc: 1, + err0: transform.ErrShortDst, + }}, +} -- cgit v1.2.3