Esempio n. 1
0
        internal Pattern CreateByType(MaskPatternType maskPatternType)
        {
            switch (maskPatternType)
            {
            case MaskPatternType.Type0:
                return(new Pattern0());

            case MaskPatternType.Type1:
                return(new Pattern1());

            case MaskPatternType.Type2:
                return(new Pattern2());

            case MaskPatternType.Type3:
                return(new Pattern3());

            case MaskPatternType.Type4:
                return(new Pattern4());

            case MaskPatternType.Type5:
                return(new Pattern5());

            case MaskPatternType.Type6:
                return(new Pattern6());

            case MaskPatternType.Type7:
                return(new Pattern7());

            default:
                throw new NotSupportedException("This is impossible.");
            }
        }
		private TestCaseData GenerateRandomTestCaseData(int version, MaskPatternType patternType)
        {
			int matrixSize = VersionDetail.Width(version);
			ByteMatrix matrix = new ByteMatrix(matrixSize, matrixSize);
			EmbedAlignmentPattern(matrix, version, patternType);
			return new TestCaseData(version, patternType, matrix.ToBitMatrix()).SetName(string.Format(s_TestNameFormat, matrixSize, version));
		}
Esempio n. 3
0
        internal Pattern CreateByType(MaskPatternType maskPatternType)
        {
            switch (maskPatternType)
            {
                case MaskPatternType.Type0:
                    return new Pattern0();

                case MaskPatternType.Type1:
                    return new Pattern1();

                case MaskPatternType.Type2:
                    return new Pattern2();

                case MaskPatternType.Type3:
                    return new Pattern3();

                case MaskPatternType.Type4:
                    return new Pattern4();

                case MaskPatternType.Type5:
                    return new Pattern5();

                case MaskPatternType.Type6:
                    return new Pattern6();

                case MaskPatternType.Type7:
                    return new Pattern7();
            }

            throw new ArgumentException(string.Format("Usupported pattern type {0}", maskPatternType), "maskPatternType");
        }
        protected virtual TestCaseData GenerateRandomTestCaseData(int matrixSize, Random randomizer, MaskPatternType pattern, PenaltyRules rules)
        {
        	ByteMatrix matrix;
            
			BitMatrix bitmatrix = GetOriginal(matrixSize, randomizer, out matrix);
			
			ApplyPattern(matrix, (int)pattern);
			
			int expect;
			
			switch(rules)
			{
				case PenaltyRules.Rule01:
					expect = MaskUtil.applyMaskPenaltyRule1(matrix);
					break;
				case PenaltyRules.Rule02:
					expect = MaskUtil.applyMaskPenaltyRule2(matrix);
					break;
				case PenaltyRules.Rule03:
					expect = MaskUtil.applyMaskPenaltyRule3(matrix);
					break;
				case PenaltyRules.Rule04:
					expect = MaskUtil.applyMaskPenaltyRule4(matrix);
					break;
				default:
					throw new InvalidOperationException(string.Format("Unsupport Rules {0}", rules.ToString()));
			}
			
			
            BitMatrix input = matrix.ToBitMatrix();
            
            return new TestCaseData(input, (int)rules, expect).SetName(string.Format(s_TestNameFormat, input.Width, rules.ToString(), expect));
        }
Esempio n. 5
0
        internal Pattern CreateByType(MaskPatternType maskPatternType)
        {
            switch (maskPatternType)
            {
            case MaskPatternType.Type0:
                return(new Pattern0());

            case MaskPatternType.Type1:
                return(new Pattern1());

            case MaskPatternType.Type2:
                return(new Pattern2());

            case MaskPatternType.Type3:
                return(new Pattern3());

            case MaskPatternType.Type4:
                return(new Pattern4());

            case MaskPatternType.Type5:
                return(new Pattern5());

            case MaskPatternType.Type6:
                return(new Pattern6());

            case MaskPatternType.Type7:
                return(new Pattern7());
            }

            throw new ArgumentException(string.Format("Usupported pattern type {0}", maskPatternType), "maskPatternType");
        }
        private TestCaseData GenerateRandomTestCaseData(int version, MaskPatternType patternType)
        {
            int        matrixSize = VersionDetail.Width(version);
            ByteMatrix matrix     = new ByteMatrix(matrixSize, matrixSize);

            EmbedAlignmentPattern(matrix, version, patternType);
            return(new TestCaseData(version, patternType, matrix.ToBitMatrix()).SetName(string.Format(s_TestNameFormat, matrixSize, version)));
        }
Esempio n. 7
0
        public void Test_against_DataSet(TriStateMatrix input, MaskPatternType patternType, BitMatrix expected)
        {
            Pattern pattern = new PatternFactory().CreateByType(patternType);

            BitMatrix result = input.Apply(pattern, ErrorCorrectionLevel.H);

            expected.AssertEquals(result);
        }
Esempio n. 8
0
        public void Test_against_DataSet(TriStateMatrix input, MaskPatternType patternType, BitMatrix expected)
        {
            Pattern pattern = new PatternFactory().CreateByType(patternType);

            BitMatrix result = input.Apply(pattern, ErrorCorrectionLevel.H);

            expected.AssertEquals(result);
        }
Esempio n. 9
0
 private void Test_One_Case(int version, MaskPatternType patternType, TriStateMatrix expected)
 {
 	TriStateMatrix target = new TriStateMatrix(expected.Width);
     PositioninngPatternBuilder.EmbedBasicPatterns(version, target);
     PatternFactory pf = new PatternFactory();
     Pattern pt = pf.CreateByType(patternType);
     target.EmbedFormatInformation(ErrorCorrectionLevel.H, pt);
     
 	expected.AssertEquals(target);
 }
Esempio n. 10
0
 /// <summary>
 /// Encode string content to QrCode matrix
 /// </summary>
 /// <exception cref="InputOutOfBoundaryException">
 /// This exception for string content is null, empty or too large</exception>
 public QrCode Encode(string content, MaskPatternType PatternType = MaskPatternType.Type5)
 {
     if (string.IsNullOrEmpty(content))
     {
         throw new InputOutOfBoundaryException("Input should not be empty or null");
     }
     else
     {
         return(new QrCode(QRCodeEncode.Encode(content, ErrorCorrectionLevel, PatternType)));
     }
 }
Esempio n. 11
0
        private void Test_One_Case(int version, MaskPatternType patternType, TriStateMatrix expected)
        {
            TriStateMatrix target = new TriStateMatrix(expected.Width);

            PositioninngPatternBuilder.EmbedBasicPatterns(version, target);
            PatternFactory pf = new PatternFactory();
            Pattern        pt = pf.CreateByType(patternType);

            target.EmbedFormatInformation(ErrorCorrectionLevel.H, pt);

            expected.AssertEquals(target);
        }
Esempio n. 12
0
 internal Pattern CreateByType(MaskPatternType maskPatternType)
 {
     return(maskPatternType switch
     {
         MaskPatternType.Type0 => new Pattern0(),
         MaskPatternType.Type1 => new Pattern1(),
         MaskPatternType.Type2 => new Pattern2(),
         MaskPatternType.Type3 => new Pattern3(),
         MaskPatternType.Type4 => new Pattern4(),
         MaskPatternType.Type5 => new Pattern5(),
         MaskPatternType.Type6 => new Pattern6(),
         MaskPatternType.Type7 => new Pattern7(),
         _ => throw new NotSupportedException("This should never happen.")
     });
Esempio n. 13
0
        private static BitMatrix ProcessEncodationResult(EncodationStruct encodeStruct, ErrorCorrectionLevel errorLevel, MaskPatternType maskPatternType = MaskPatternType.Type5)
        {
            BitList codewords = ECGenerator.FillECCodewords(encodeStruct.DataCodewords, encodeStruct.VersionDetail);

            TriStateMatrix triMatrix = new TriStateMatrix(encodeStruct.VersionDetail.MatrixWidth);

            PositioninngPatternBuilder.EmbedBasicPatterns(encodeStruct.VersionDetail.Version, triMatrix);
            triMatrix.EmbedVersionInformation(encodeStruct.VersionDetail.Version);



            // triMatrix.EmbedFormatInformation(errorLevel, new Pattern0());
            Pattern pattern = new PatternFactory().CreateByType(maskPatternType);


            triMatrix.EmbedFormatInformation(errorLevel, pattern);
            triMatrix.TryEmbedCodewords(codewords);

            return(triMatrix.GetLowestPenaltyMatrix(errorLevel, pattern));
        }
        protected virtual TestCaseData GenerateRandomTestCaseData(int matrixSize, Random randomizer, MaskPatternType pattern, PenaltyRules rules)
        {
            ByteMatrix matrix;

            BitMatrix bitmatrix = GetOriginal(matrixSize, randomizer, out matrix);

            ApplyPattern(matrix, (int)pattern);

            int expect;

            switch (rules)
            {
            case PenaltyRules.Rule01:
                expect = MaskUtil.applyMaskPenaltyRule1(matrix);
                break;

            case PenaltyRules.Rule02:
                expect = MaskUtil.applyMaskPenaltyRule2(matrix);
                break;

            case PenaltyRules.Rule03:
                expect = MaskUtil.applyMaskPenaltyRule3(matrix);
                break;

            case PenaltyRules.Rule04:
                expect = MaskUtil.applyMaskPenaltyRule4(matrix);
                break;

            default:
                throw new InvalidOperationException(string.Format("Unsupport Rules {0}", rules.ToString()));
            }


            BitMatrix input = matrix.ToBitMatrix();

            return(new TestCaseData(input, (int)rules, expect).SetName(string.Format(s_TestNameFormat, input.Width, rules.ToString(), expect)));
        }
 protected abstract TestCaseData GenerateRandomTestCaseData(int matrixSize, Random randomizer, MaskPatternType pattern);
		private void EmbedAlignmentPattern(ByteMatrix matrix, int version, MaskPatternType patterntype)
        {
            matrix.Clear(-1);
            MatrixUtil.embedBasicPatterns(version, matrix);
            MatrixUtil.embedTypeInfo(ErrorCorrectionLevelInternal.H, (int)patterntype, matrix);
        }
Esempio n. 17
0
 public void Test_against_DataSet(int version, MaskPatternType patternType, TriStateMatrix expected)
 {
 	Test_One_Case(version, patternType, expected);
 }
 protected override NUnit.Framework.TestCaseData GenerateRandomTestCaseData(int matrixSize, System.Random randomizer, MaskPatternType pattern)
 {
     return(base.GenerateRandomTestCaseData(matrixSize, randomizer, pattern, PenaltyRules.Rule01));
 }
Esempio n. 19
0
 public void Test_against_DataSet(int version, MaskPatternType patternType, TriStateMatrix expected)
 {
     Test_One_Case(version, patternType, expected);
 }
Esempio n. 20
0
 public void Test_against_reference_implementation(int version, MaskPatternType patternType, TriStateMatrix expected)
 {
     Test_One_Case(version, patternType, expected);
 }
 protected abstract TestCaseData GenerateRandomTestCaseData(int matrixSize, Random randomizer, MaskPatternType pattern);
Esempio n. 22
0
		protected override NUnit.Framework.TestCaseData GenerateRandomTestCaseData(int matrixSize, System.Random randomizer, MaskPatternType pattern)
		{
			return base.GenerateRandomTestCaseData(matrixSize, randomizer, pattern, PenaltyRules.Rule02);
		}
Esempio n. 23
0
 public void Test_against_reference_implementation(int version, MaskPatternType patternType, TriStateMatrix expected)
 {
 	Test_One_Case(version, patternType,  expected);
 }
Esempio n. 24
0
 private void EmbedAlignmentPattern(ByteMatrix matrix, int version, MaskPatternType patterntype)
 {
     matrix.Clear(-1);
     MatrixUtil.embedBasicPatterns(version, matrix);
     MatrixUtil.embedTypeInfo(ErrorCorrectionLevelInternal.H, (int)patterntype, matrix);
 }
Esempio n. 25
0
        internal static BitMatrix Encode(string content, ErrorCorrectionLevel errorLevel, MaskPatternType maskPatternType)
        {
            EncodationStruct encodeStruct = DataEncode.Encode(content, errorLevel);

            return(ProcessEncodationResult(encodeStruct, errorLevel, maskPatternType));
        }