zxing_cpp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.gitmodules +3 -0
- data/CHANGELOG.rdoc +6 -0
- data/Gemfile +3 -0
- data/Manifest.txt +331 -0
- data/README.rdoc +138 -0
- data/Rakefile +28 -0
- data/bin/zxd +87 -0
- data/bin/zxe +53 -0
- data/ext/zxing/extconf.rb +27 -0
- data/ext/zxing/zxing-cpp/.gitignore +4 -0
- data/ext/zxing/zxing-cpp/AUTHORS +115 -0
- data/ext/zxing/zxing-cpp/CMakeLists.txt +84 -0
- data/ext/zxing/zxing-cpp/COPYING +201 -0
- data/ext/zxing/zxing-cpp/NOTICE +65 -0
- data/ext/zxing/zxing-cpp/README.md +50 -0
- data/ext/zxing/zxing-cpp/cli/src/ImageReaderSource.cpp +112 -0
- data/ext/zxing/zxing-cpp/cli/src/ImageReaderSource.h +40 -0
- data/ext/zxing/zxing-cpp/cli/src/jpgd.cpp +3174 -0
- data/ext/zxing/zxing-cpp/cli/src/jpgd.h +319 -0
- data/ext/zxing/zxing-cpp/cli/src/lodepng.cpp +6261 -0
- data/ext/zxing/zxing-cpp/cli/src/lodepng.h +1695 -0
- data/ext/zxing/zxing-cpp/cli/src/main.cpp +297 -0
- data/ext/zxing/zxing-cpp/cmake/FindCPPUNIT.cmake +54 -0
- data/ext/zxing/zxing-cpp/cmake/FindIconv.cmake +57 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/.gitignore +6 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigInteger.cc +405 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigInteger.hh +215 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigIntegerAlgorithms.cc +70 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigIntegerAlgorithms.hh +25 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigIntegerLibrary.hh +8 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigIntegerUtils.cc +50 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigIntegerUtils.hh +72 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigUnsigned.cc +697 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigUnsigned.hh +418 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigUnsignedInABase.cc +125 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigUnsignedInABase.hh +122 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/ChangeLog +146 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/Makefile +73 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/NumberlikeArray.hh +177 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/README +71 -0
- data/ext/zxing/zxing-cpp/core/src/win32/zxing/iconv.h +14 -0
- data/ext/zxing/zxing-cpp/core/src/win32/zxing/stdint.h +247 -0
- data/ext/zxing/zxing-cpp/core/src/win32/zxing/win_iconv.c +2035 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/BarcodeFormat.cpp +40 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/BarcodeFormat.h +60 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Binarizer.cpp +45 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Binarizer.h +50 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/BinaryBitmap.cpp +70 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/BinaryBitmap.h +56 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ChecksumException.cpp +28 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ChecksumException.h +34 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/DecodeHints.cpp +142 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/DecodeHints.h +85 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Exception.cpp +43 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Exception.h +51 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/FormatException.cpp +41 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/FormatException.h +37 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/IllegalStateException.h +35 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/InvertedLuminanceSource.cpp +68 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/InvertedLuminanceSource.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/LuminanceSource.cpp +86 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/LuminanceSource.h +59 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/MultiFormatReader.cpp +124 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/MultiFormatReader.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/NotFoundException.h +35 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Reader.cpp +31 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Reader.h +40 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ReaderException.h +37 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Result.cpp +61 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Result.h +55 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ResultIO.cpp +34 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ResultPoint.cpp +108 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ResultPoint.h +55 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ResultPointCallback.cpp +26 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ResultPointCallback.h +39 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ZXing.h +133 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/AztecDetectorResult.cpp +54 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/AztecDetectorResult.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/AztecReader.cpp +68 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/AztecReader.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/decoder/Decoder.cpp +489 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/decoder/Decoder.h +69 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/detector/Detector.cpp +548 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/detector/Detector.h +92 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/Array.h +170 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitArray.cpp +155 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitArray.h +81 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitArrayIO.cpp +31 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitMatrix.cpp +143 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitMatrix.h +91 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitSource.cpp +76 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitSource.h +74 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/CharacterSetECI.cpp +104 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/CharacterSetECI.h +53 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/Counted.h +140 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/DecoderResult.cpp +46 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/DecoderResult.h +51 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/DetectorResult.cpp +39 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/DetectorResult.h +43 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GlobalHistogramBinarizer.cpp +212 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GlobalHistogramBinarizer.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GreyscaleLuminanceSource.cpp +80 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GreyscaleLuminanceSource.h +53 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GreyscaleRotatedLuminanceSource.cpp +81 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GreyscaleRotatedLuminanceSource.h +46 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GridSampler.cpp +122 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GridSampler.h +45 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/HybridBinarizer.cpp +226 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/HybridBinarizer.h +67 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/IllegalArgumentException.cpp +27 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/IllegalArgumentException.h +36 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/PerspectiveTransform.cpp +107 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/PerspectiveTransform.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/Point.h +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/Str.cpp +61 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/Str.h +51 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/StringUtils.cpp +198 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/StringUtils.h +52 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/JavaMath.h +43 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/MathUtils.h +57 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/MonochromeRectangleDetector.cpp +174 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/MonochromeRectangleDetector.h +62 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/WhiteRectangleDetector.cpp +330 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/WhiteRectangleDetector.h +59 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/GenericGF.cpp +150 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/GenericGF.h +73 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/GenericGFPoly.cpp +218 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/GenericGFPoly.h +56 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/ReedSolomonDecoder.cpp +174 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/ReedSolomonDecoder.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/ReedSolomonException.cpp +30 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/ReedSolomonException.h +33 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/DataMatrixReader.cpp +54 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/DataMatrixReader.h +45 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/Version.cpp +199 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/Version.h +87 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/BitMatrixParser.cpp +361 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/BitMatrixParser.h +59 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/DataBlock.cpp +113 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/DataBlock.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/DecodedBitStreamParser.cpp +416 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/DecodedBitStreamParser.h +104 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/Decoder.cpp +93 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/Decoder.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/CornerPoint.cpp +46 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/CornerPoint.h +43 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/Detector.cpp +446 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/Detector.h +94 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/DetectorException.cpp +23 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/DetectorException.h +23 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/ByQuadrantReader.cpp +75 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/ByQuadrantReader.h +42 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/GenericMultipleBarcodeReader.cpp +137 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/GenericMultipleBarcodeReader.h +51 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/MultipleBarcodeReader.cpp +29 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/MultipleBarcodeReader.h +41 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/QRCodeMultiReader.cpp +58 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/QRCodeMultiReader.h +36 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/detector/MultiDetector.cpp +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/detector/MultiDetector.h +37 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/detector/MultiFinderPatternFinder.cpp +236 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/detector/MultiFinderPatternFinder.h +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/CodaBarReader.cpp +340 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/CodaBarReader.h +57 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code128Reader.cpp +496 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code128Reader.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code39Reader.cpp +328 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code39Reader.h +63 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code93Reader.cpp +293 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code93Reader.h +58 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/EAN13Reader.cpp +85 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/EAN13Reader.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/EAN8Reader.cpp +65 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/EAN8Reader.h +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/ITFReader.cpp +337 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/ITFReader.h +54 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/MultiFormatOneDReader.cpp +96 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/MultiFormatOneDReader.h +38 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/MultiFormatUPCEANReader.cpp +110 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/MultiFormatUPCEANReader.h +41 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/OneDReader.cpp +227 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/OneDReader.h +81 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/OneDResultPoint.cpp +28 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/OneDResultPoint.h +35 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCAReader.cpp +71 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCAReader.h +50 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCEANReader.cpp +309 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCEANReader.h +88 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCEReader.cpp +146 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCEReader.h +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/PDF417Reader.cpp +170 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/PDF417Reader.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/BitMatrixParser.cpp +997 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/BitMatrixParser.h +84 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/DecodedBitStreamParser.cpp +563 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/DecodedBitStreamParser.h +84 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/Decoder.cpp +118 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/Decoder.h +62 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ErrorCorrection.cpp +214 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ErrorCorrection.h +71 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ModulusGF.cpp +120 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ModulusGF.h +72 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ModulusPoly.cpp +284 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ModulusPoly.h +68 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/detector/Detector.cpp +664 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/detector/Detector.h +106 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/detector/LinesSampler.cpp +714 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/detector/LinesSampler.h +122 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/ErrorCorrectionLevel.cpp +65 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/ErrorCorrectionLevel.h +52 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/FormatInformation.cpp +117 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/FormatInformation.h +54 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/QRCodeReader.cpp +52 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/QRCodeReader.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/Version.cpp +560 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/Version.h +85 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/BitMatrixParser.cpp +183 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/BitMatrixParser.h +56 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DataBlock.cpp +118 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DataBlock.h +50 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DataMask.cpp +159 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DataMask.h +50 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.cpp +425 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.h +72 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/Decoder.cpp +107 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/Decoder.h +46 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/Mode.cpp +90 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/Mode.h +57 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/AlignmentPattern.cpp +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/AlignmentPattern.h +45 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/AlignmentPatternFinder.cpp +208 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/AlignmentPatternFinder.h +68 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/Detector.cpp +314 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/Detector.h +69 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPattern.cpp +69 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPattern.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPatternFinder.cpp +559 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPatternFinder.h +76 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPatternInfo.cpp +41 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPatternInfo.h +47 -0
- data/ext/zxing/zxing-cpp/core/tests/src/TestRunner.cpp +30 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitArrayTest.cpp +216 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitArrayTest.h +61 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitMatrixTest.cpp +106 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitMatrixTest.h +55 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitSourceTest.cpp +49 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitSourceTest.h +42 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/CountedTest.cpp +58 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/CountedTest.h +46 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/PerspectiveTransformTest.cpp +69 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/PerspectiveTransformTest.h +47 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/reedsolomon/ReedSolomonTest.cpp +129 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/reedsolomon/ReedSolomonTest.h +62 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/ErrorCorrectionLevelTest.cpp +47 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/ErrorCorrectionLevelTest.h +45 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/FormatInformationTest.cpp +88 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/FormatInformationTest.h +47 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/VersionTest.cpp +88 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/VersionTest.h +49 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/decoder/DataMaskTest.cpp +132 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/decoder/DataMaskTest.h +91 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/decoder/ModeTest.cpp +52 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/decoder/ModeTest.h +47 -0
- data/ext/zxing/zxing.cc +224 -0
- data/lib/zxing.rb +50 -0
- data/lib/zxing/.gitignore +2 -0
- data/lib/zxing/aztec.rb +5 -0
- data/lib/zxing/aztec/aztec_reader.rb +14 -0
- data/lib/zxing/bad_image_exception.rb +4 -0
- data/lib/zxing/binarizer.rb +8 -0
- data/lib/zxing/binary_bitmap.rb +15 -0
- data/lib/zxing/checksum_exception.rb +4 -0
- data/lib/zxing/common.rb +7 -0
- data/lib/zxing/common/bit_matrix.rb +9 -0
- data/lib/zxing/common/hybrid_binarizer.rb +17 -0
- data/lib/zxing/common/illegal_argument_exception.rb +4 -0
- data/lib/zxing/datamatrix.rb +5 -0
- data/lib/zxing/datamatrix/data_matrix_reader.rb +14 -0
- data/lib/zxing/decodable.rb +11 -0
- data/lib/zxing/exception.rb +4 -0
- data/lib/zxing/ffi.rb +20 -0
- data/lib/zxing/ffi/aztec.rb +6 -0
- data/lib/zxing/ffi/aztec/aztec_reader.rb +9 -0
- data/lib/zxing/ffi/binarizer.rb +25 -0
- data/lib/zxing/ffi/binary_bitmap.rb +15 -0
- data/lib/zxing/ffi/common.rb +8 -0
- data/lib/zxing/ffi/common/bit_matrix.rb +12 -0
- data/lib/zxing/ffi/common/greyscale_luminance_source.rb +30 -0
- data/lib/zxing/ffi/common/hybrid_binarizer.rb +10 -0
- data/lib/zxing/ffi/datamatrix.rb +6 -0
- data/lib/zxing/ffi/datamatrix/data_matrix_reader.rb +9 -0
- data/lib/zxing/ffi/library.rb +102 -0
- data/lib/zxing/ffi/luminance_source.rb +18 -0
- data/lib/zxing/ffi/multi_format_reader.rb +9 -0
- data/lib/zxing/ffi/oned.rb +6 -0
- data/lib/zxing/ffi/oned/code_39_reader.rb +10 -0
- data/lib/zxing/ffi/qrcode.rb +8 -0
- data/lib/zxing/ffi/qrcode/decoder.rb +10 -0
- data/lib/zxing/ffi/qrcode/detector.rb +10 -0
- data/lib/zxing/ffi/reader.rb +58 -0
- data/lib/zxing/ffi/result.rb +23 -0
- data/lib/zxing/format_exception.rb +4 -0
- data/lib/zxing/illegal_argument_exception.rb +4 -0
- data/lib/zxing/image.rb +15 -0
- data/lib/zxing/luminance_source.rb +18 -0
- data/lib/zxing/multi_format_reader.rb +11 -0
- data/lib/zxing/not_found_exception.rb +4 -0
- data/lib/zxing/oned.rb +5 -0
- data/lib/zxing/oned/code_39_reader.rb +15 -0
- data/lib/zxing/qrcode.rb +8 -0
- data/lib/zxing/qrcode/decoder.rb +14 -0
- data/lib/zxing/qrcode/detector.rb +14 -0
- data/lib/zxing/qrcode/encoder.rb +8 -0
- data/lib/zxing/qrcode/encoder/byte_matrix.rb +18 -0
- data/lib/zxing/qrcode/encoder/encoder.rb +9 -0
- data/lib/zxing/qrcode/encoder/qrcode.rb +18 -0
- data/lib/zxing/reader.rb +8 -0
- data/lib/zxing/reader_exception.rb +4 -0
- data/lib/zxing/reed_solomon_exception.rb +2 -0
- data/lib/zxing/result.rb +18 -0
- data/lib/zxing/rmagick.rb +5 -0
- data/lib/zxing/rmagick/image.rb +104 -0
- data/lib/zxing/version.rb +33 -0
- data/test/qrcode.png +0 -0
- data/test/test_helper.rb +5 -0
- data/test/test_zxing.rb +58 -0
- data/test/vendor.rb +360 -0
- data/test/zxing/test_decodable.rb +38 -0
- data/zxing_cpp.gemspec +48 -0
- metadata +473 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ReedSolomonTest.cpp
|
|
3
|
+
* zxing
|
|
4
|
+
*
|
|
5
|
+
* Created by Christian Brunschen on 06/05/2008.
|
|
6
|
+
* Copyright 2008 Google UK. All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
* you may not use this file except in compliance with the License.
|
|
10
|
+
* You may obtain a copy of the License at
|
|
11
|
+
*
|
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*
|
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
* See the License for the specific language governing permissions and
|
|
18
|
+
* limitations under the License.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#include "ReedSolomonTest.h"
|
|
22
|
+
#include <zxing/common/reedsolomon/ReedSolomonDecoder.h>
|
|
23
|
+
#include <zxing/common/reedsolomon/ReedSolomonException.h>
|
|
24
|
+
#include <zxing/common/IllegalArgumentException.h>
|
|
25
|
+
#include <vector>
|
|
26
|
+
#include <cmath>
|
|
27
|
+
#include <cstdlib>
|
|
28
|
+
|
|
29
|
+
namespace zxing {
|
|
30
|
+
using namespace std;
|
|
31
|
+
|
|
32
|
+
CPPUNIT_TEST_SUITE_REGISTRATION(ReedSolomonTest);
|
|
33
|
+
|
|
34
|
+
static inline ArrayRef<int> makeVector(int n, int *items) {
|
|
35
|
+
ArrayRef<int> v(new Array<int>(items, n));
|
|
36
|
+
return v;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static int QR_CODE_TEST[] = { 0x10, 0x20, 0x0C, 0x56, 0x61, 0x80, 0xEC, 0x11, 0xEC,
|
|
40
|
+
0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xA5
|
|
41
|
+
};
|
|
42
|
+
static int QR_CODE_TEST_WITH_EC[] = { 0x10, 0x20, 0x0C, 0x56, 0x61, 0x80, 0xEC, 0x11, 0xEC,
|
|
43
|
+
0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xA5, 0x24,
|
|
44
|
+
0xD4, 0xC1, 0xED, 0x36, 0xC7, 0x87, 0x2C, 0x55
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
void ReedSolomonTest::setUp() {
|
|
48
|
+
qrCodeTest_ =
|
|
49
|
+
makeVector(sizeof(QR_CODE_TEST) / sizeof(QR_CODE_TEST[0]),
|
|
50
|
+
QR_CODE_TEST);
|
|
51
|
+
qrCodeTestWithEc_ =
|
|
52
|
+
makeVector(sizeof(QR_CODE_TEST_WITH_EC) / sizeof(QR_CODE_TEST_WITH_EC[0]),
|
|
53
|
+
QR_CODE_TEST_WITH_EC);
|
|
54
|
+
qrCodeCorrectable_ =
|
|
55
|
+
(qrCodeTestWithEc_->size() - qrCodeTest_->size()) / 2;
|
|
56
|
+
|
|
57
|
+
qrRSDecoder_ = new ReedSolomonDecoder(GenericGF::QR_CODE_FIELD_256);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
void ReedSolomonTest::tearDown() {
|
|
61
|
+
delete qrRSDecoder_;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
void ReedSolomonTest::testNoError() {
|
|
65
|
+
ArrayRef<int> received(new Array<int>(qrCodeTestWithEc_->size()));
|
|
66
|
+
*received = *qrCodeTestWithEc_;
|
|
67
|
+
checkQRRSDecode(received);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
void ReedSolomonTest::testOneError() {
|
|
71
|
+
ArrayRef<int> received(new Array<int>(qrCodeTestWithEc_->size()));
|
|
72
|
+
srandom(0xDEADBEEFL);
|
|
73
|
+
for (int i = 0; i < received->size(); i++) {
|
|
74
|
+
*received = *qrCodeTestWithEc_;
|
|
75
|
+
received[i] = random() % 256;
|
|
76
|
+
checkQRRSDecode(received);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
void ReedSolomonTest::testMaxErrors() {
|
|
81
|
+
ArrayRef<int> received(new Array<int>(qrCodeTestWithEc_->size()));
|
|
82
|
+
srandom(0xDEADBEEFL);
|
|
83
|
+
for (int i = 0; i < qrCodeTest_->size(); i++) {
|
|
84
|
+
*received = *qrCodeTestWithEc_;
|
|
85
|
+
corrupt(received, qrCodeCorrectable_);
|
|
86
|
+
checkQRRSDecode(received);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
void ReedSolomonTest::testTooManyErrors() {
|
|
91
|
+
ArrayRef<int> received(new Array<int>(qrCodeTestWithEc_->size()));
|
|
92
|
+
srandom(0xDEADBEEFL);
|
|
93
|
+
*received = *qrCodeTestWithEc_;
|
|
94
|
+
try {
|
|
95
|
+
corrupt(received, qrCodeCorrectable_ + 1);
|
|
96
|
+
checkQRRSDecode(received);
|
|
97
|
+
cout << "expected exception!\n";
|
|
98
|
+
CPPUNIT_FAIL("should not happen!");
|
|
99
|
+
} catch (ReedSolomonException const& e) {
|
|
100
|
+
// expected
|
|
101
|
+
} catch (...) {
|
|
102
|
+
CPPUNIT_FAIL("unexpected exception!");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
void ReedSolomonTest::checkQRRSDecode(ArrayRef<int> &received) {
|
|
108
|
+
int twoS = 2 * qrCodeCorrectable_;
|
|
109
|
+
qrRSDecoder_->decode(received, twoS);
|
|
110
|
+
for (int i = 0; i < qrCodeTest_->size(); i++) {
|
|
111
|
+
CPPUNIT_ASSERT_EQUAL(qrCodeTest_[i], received[i]);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
void ReedSolomonTest::corrupt(ArrayRef<int> &received, int howMany) {
|
|
116
|
+
vector<bool> corrupted(received->size());
|
|
117
|
+
for (int j = 0; j < howMany; j++) {
|
|
118
|
+
int location = floor(received->size() * ((double)(random() >> 1) / (double)((RAND_MAX >> 1) + 1)));
|
|
119
|
+
if (corrupted[location]) {
|
|
120
|
+
j--;
|
|
121
|
+
} else {
|
|
122
|
+
corrupted[location] = true;
|
|
123
|
+
int newByte = random() % 256;
|
|
124
|
+
received[location] = newByte;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#ifndef __REED_SOLOMON_TEST_H__
|
|
2
|
+
#define __REED_SOLOMON_TEST_H__
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* ReedSolomonTest.h
|
|
6
|
+
* zxing
|
|
7
|
+
*
|
|
8
|
+
* Copyright 2010 ZXing authors All rights reserved.
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include <vector>
|
|
24
|
+
#include <memory>
|
|
25
|
+
#include <cppunit/TestFixture.h>
|
|
26
|
+
#include <cppunit/extensions/HelperMacros.h>
|
|
27
|
+
#include <zxing/common/Counted.h>
|
|
28
|
+
#include <zxing/common/Array.h>
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
namespace zxing {
|
|
32
|
+
class ReedSolomonDecoder;
|
|
33
|
+
|
|
34
|
+
class ReedSolomonTest : public CppUnit::TestFixture {
|
|
35
|
+
CPPUNIT_TEST_SUITE(ReedSolomonTest);
|
|
36
|
+
CPPUNIT_TEST(testNoError);
|
|
37
|
+
CPPUNIT_TEST(testOneError);
|
|
38
|
+
CPPUNIT_TEST(testMaxErrors);
|
|
39
|
+
CPPUNIT_TEST(testTooManyErrors);
|
|
40
|
+
CPPUNIT_TEST_SUITE_END();
|
|
41
|
+
|
|
42
|
+
public:
|
|
43
|
+
void setUp();
|
|
44
|
+
void tearDown();
|
|
45
|
+
|
|
46
|
+
protected:
|
|
47
|
+
void testNoError();
|
|
48
|
+
void testOneError();
|
|
49
|
+
void testMaxErrors();
|
|
50
|
+
void testTooManyErrors();
|
|
51
|
+
|
|
52
|
+
private:
|
|
53
|
+
ArrayRef<int> qrCodeTest_;
|
|
54
|
+
ArrayRef<int> qrCodeTestWithEc_;
|
|
55
|
+
int qrCodeCorrectable_;
|
|
56
|
+
ReedSolomonDecoder *qrRSDecoder_;
|
|
57
|
+
void checkQRRSDecode(ArrayRef<int> &received);
|
|
58
|
+
static void corrupt(ArrayRef<int> &received, int howMany);
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
#endif // __REED_SOLOMON_TEST_H__
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ErrorCorrectionLevelTest.cpp
|
|
3
|
+
* zxing
|
|
4
|
+
*
|
|
5
|
+
* Created by Christian Brunschen on 19/05/2008.
|
|
6
|
+
* Copyright 2008 ZXing authors All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
* you may not use this file except in compliance with the License.
|
|
10
|
+
* You may obtain a copy of the License at
|
|
11
|
+
*
|
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*
|
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
* See the License for the specific language governing permissions and
|
|
18
|
+
* limitations under the License.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#include "ErrorCorrectionLevelTest.h"
|
|
22
|
+
#include <zxing/ReaderException.h>
|
|
23
|
+
#include <zxing/qrcode/ErrorCorrectionLevel.h>
|
|
24
|
+
|
|
25
|
+
namespace zxing {
|
|
26
|
+
namespace qrcode {
|
|
27
|
+
|
|
28
|
+
CPPUNIT_TEST_SUITE_REGISTRATION(ErrorCorrectionLevelTest);
|
|
29
|
+
|
|
30
|
+
void ErrorCorrectionLevelTest::testForBits() {
|
|
31
|
+
CPPUNIT_ASSERT_EQUAL(&ErrorCorrectionLevel::M,
|
|
32
|
+
&ErrorCorrectionLevel::forBits(0));
|
|
33
|
+
CPPUNIT_ASSERT_EQUAL(&ErrorCorrectionLevel::L,
|
|
34
|
+
&ErrorCorrectionLevel::forBits(1));
|
|
35
|
+
CPPUNIT_ASSERT_EQUAL(&ErrorCorrectionLevel::H,
|
|
36
|
+
&ErrorCorrectionLevel::forBits(2));
|
|
37
|
+
CPPUNIT_ASSERT_EQUAL(&ErrorCorrectionLevel::Q,
|
|
38
|
+
&ErrorCorrectionLevel::forBits(3));
|
|
39
|
+
try {
|
|
40
|
+
ErrorCorrectionLevel::forBits(4);
|
|
41
|
+
CPPUNIT_FAIL("should have thrown an exception");
|
|
42
|
+
} catch (zxing::ReaderException const& ex) {
|
|
43
|
+
// expected
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#ifndef __ERROR_CORRECTION_LEVEL_TEST_H__
|
|
2
|
+
#define __ERROR_CORRECTION_LEVEL_TEST_H__
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* ErrorCorrectionLevelTest.h
|
|
6
|
+
* zxing
|
|
7
|
+
*
|
|
8
|
+
* Copyright 2010 ZXing authors All rights reserved.
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include <cppunit/TestFixture.h>
|
|
24
|
+
#include <cppunit/extensions/HelperMacros.h>
|
|
25
|
+
#include <zxing/qrcode/ErrorCorrectionLevel.h>
|
|
26
|
+
|
|
27
|
+
namespace zxing {
|
|
28
|
+
namespace qrcode {
|
|
29
|
+
|
|
30
|
+
class ErrorCorrectionLevelTest : public CPPUNIT_NS::TestFixture {
|
|
31
|
+
CPPUNIT_TEST_SUITE(ErrorCorrectionLevelTest);
|
|
32
|
+
CPPUNIT_TEST(testForBits);
|
|
33
|
+
CPPUNIT_TEST_SUITE_END();
|
|
34
|
+
|
|
35
|
+
public:
|
|
36
|
+
|
|
37
|
+
protected:
|
|
38
|
+
void testForBits();
|
|
39
|
+
|
|
40
|
+
private:
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
#endif // __ERROR_CORRECTION_LEVEL_TEST_H__
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* FormatInformationTest.cpp
|
|
3
|
+
* zxing
|
|
4
|
+
*
|
|
5
|
+
* Created by Christian Brunschen on 19/05/2008.
|
|
6
|
+
* Copyright 2008 ZXing authors All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
* you may not use this file except in compliance with the License.
|
|
10
|
+
* You may obtain a copy of the License at
|
|
11
|
+
*
|
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*
|
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
* See the License for the specific language governing permissions and
|
|
18
|
+
* limitations under the License.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#include "FormatInformationTest.h"
|
|
22
|
+
|
|
23
|
+
#include "ErrorCorrectionLevelTest.h"
|
|
24
|
+
#include <zxing/ReaderException.h>
|
|
25
|
+
#include <zxing/qrcode/FormatInformation.h>
|
|
26
|
+
#include <zxing/qrcode/ErrorCorrectionLevel.h>
|
|
27
|
+
|
|
28
|
+
namespace zxing {
|
|
29
|
+
namespace qrcode {
|
|
30
|
+
|
|
31
|
+
CPPUNIT_TEST_SUITE_REGISTRATION(FormatInformationTest);
|
|
32
|
+
|
|
33
|
+
static const int MASKED_TEST_FORMAT_INFO = 0x2BED;
|
|
34
|
+
static const int UNMASKED_TEST_FORMAT_INFO = MASKED_TEST_FORMAT_INFO ^ 0x5412;
|
|
35
|
+
|
|
36
|
+
static void assertEquals(Ref<FormatInformation> a,
|
|
37
|
+
Ref<FormatInformation> b) {
|
|
38
|
+
if (a == NULL || b == NULL)
|
|
39
|
+
{
|
|
40
|
+
CPPUNIT_ASSERT_EQUAL(a, b);
|
|
41
|
+
}
|
|
42
|
+
else
|
|
43
|
+
{
|
|
44
|
+
FormatInformation &aa = *a;
|
|
45
|
+
FormatInformation &bb = *b;
|
|
46
|
+
CPPUNIT_ASSERT_EQUAL(aa, bb);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
void FormatInformationTest::testBitsDiffering() {
|
|
51
|
+
CPPUNIT_ASSERT_EQUAL(0, FormatInformation::numBitsDiffering(1, 1));
|
|
52
|
+
CPPUNIT_ASSERT_EQUAL(1, FormatInformation::numBitsDiffering(0, 2));
|
|
53
|
+
CPPUNIT_ASSERT_EQUAL(2, FormatInformation::numBitsDiffering(1, 2));
|
|
54
|
+
CPPUNIT_ASSERT_EQUAL(32, FormatInformation::numBitsDiffering(0xffffffff,
|
|
55
|
+
0));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
void FormatInformationTest::testDecode() {
|
|
59
|
+
// Normal case
|
|
60
|
+
Ref<FormatInformation> expected =
|
|
61
|
+
FormatInformation::decodeFormatInformation(MASKED_TEST_FORMAT_INFO, MASKED_TEST_FORMAT_INFO);
|
|
62
|
+
CPPUNIT_ASSERT_EQUAL((char)0x07, expected->getDataMask());
|
|
63
|
+
CPPUNIT_ASSERT_EQUAL(&ErrorCorrectionLevel::Q,
|
|
64
|
+
&expected->getErrorCorrectionLevel());
|
|
65
|
+
// where the code forgot the mask!
|
|
66
|
+
assertEquals(expected,
|
|
67
|
+
FormatInformation::decodeFormatInformation(UNMASKED_TEST_FORMAT_INFO, MASKED_TEST_FORMAT_INFO));
|
|
68
|
+
|
|
69
|
+
//TODO separate tests as in Java?
|
|
70
|
+
|
|
71
|
+
// 1,2,3,4 bits difference
|
|
72
|
+
assertEquals(expected, FormatInformation::decodeFormatInformation(
|
|
73
|
+
MASKED_TEST_FORMAT_INFO ^ 0x01, MASKED_TEST_FORMAT_INFO ^ 0x01));
|
|
74
|
+
assertEquals(expected, FormatInformation::decodeFormatInformation(
|
|
75
|
+
MASKED_TEST_FORMAT_INFO ^ 0x03, MASKED_TEST_FORMAT_INFO ^ 0x03));
|
|
76
|
+
assertEquals(expected, FormatInformation::decodeFormatInformation(
|
|
77
|
+
MASKED_TEST_FORMAT_INFO ^ 0x07, MASKED_TEST_FORMAT_INFO ^ 0x07));
|
|
78
|
+
|
|
79
|
+
Ref<FormatInformation> expectedNull(NULL);
|
|
80
|
+
assertEquals(expectedNull, FormatInformation::decodeFormatInformation(
|
|
81
|
+
MASKED_TEST_FORMAT_INFO ^ 0x0F, MASKED_TEST_FORMAT_INFO ^ 0x0F));
|
|
82
|
+
|
|
83
|
+
// WithMisread
|
|
84
|
+
assertEquals(expected, FormatInformation::decodeFormatInformation(
|
|
85
|
+
MASKED_TEST_FORMAT_INFO ^ 0x03, MASKED_TEST_FORMAT_INFO ^ 0x0F));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#ifndef __FORMAT_INFORMATION_TEST_H__
|
|
2
|
+
#define __FORMAT_INFORMATION_TEST_H__
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* FormatInformationTest.h
|
|
6
|
+
* zxing
|
|
7
|
+
*
|
|
8
|
+
* Copyright 2010 ZXing authors All rights reserved.
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include <cppunit/TestFixture.h>
|
|
24
|
+
#include <cppunit/extensions/HelperMacros.h>
|
|
25
|
+
#include <zxing/qrcode/FormatInformation.h>
|
|
26
|
+
|
|
27
|
+
namespace zxing {
|
|
28
|
+
namespace qrcode {
|
|
29
|
+
|
|
30
|
+
class FormatInformationTest : public CPPUNIT_NS::TestFixture {
|
|
31
|
+
CPPUNIT_TEST_SUITE(FormatInformationTest);
|
|
32
|
+
CPPUNIT_TEST(testBitsDiffering);
|
|
33
|
+
CPPUNIT_TEST(testDecode);
|
|
34
|
+
CPPUNIT_TEST_SUITE_END();
|
|
35
|
+
|
|
36
|
+
public:
|
|
37
|
+
|
|
38
|
+
protected:
|
|
39
|
+
void testBitsDiffering();
|
|
40
|
+
void testDecode();
|
|
41
|
+
|
|
42
|
+
private:
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
#endif // __FORMAT_INFORMATION_TEST_H__
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* VersionTest.cpp
|
|
3
|
+
* zxing
|
|
4
|
+
*
|
|
5
|
+
* Created by Christian Brunschen on 19/05/2008.
|
|
6
|
+
* Copyright 2008 ZXing authors All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
* you may not use this file except in compliance with the License.
|
|
10
|
+
* You may obtain a copy of the License at
|
|
11
|
+
*
|
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*
|
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
* See the License for the specific language governing permissions and
|
|
18
|
+
* limitations under the License.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#include "VersionTest.h"
|
|
22
|
+
#include <zxing/ReaderException.h>
|
|
23
|
+
#include <zxing/qrcode/Version.h>
|
|
24
|
+
|
|
25
|
+
namespace zxing {
|
|
26
|
+
namespace qrcode {
|
|
27
|
+
|
|
28
|
+
static void assertNotNull(ECBlocks *blocks) {
|
|
29
|
+
CPPUNIT_ASSERT_EQUAL(false, blocks == 0);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static void checkVersion(Version *version, int number, int dimension) {
|
|
33
|
+
CPPUNIT_ASSERT_EQUAL(false, version == 0);
|
|
34
|
+
CPPUNIT_ASSERT_EQUAL(number, version->getVersionNumber());
|
|
35
|
+
if (number > 1) {
|
|
36
|
+
CPPUNIT_ASSERT_EQUAL(true,
|
|
37
|
+
version->getAlignmentPatternCenters().size() > 0);
|
|
38
|
+
}
|
|
39
|
+
CPPUNIT_ASSERT_EQUAL(dimension, version->getDimensionForVersion());
|
|
40
|
+
assertNotNull(&version->getECBlocksForLevel(ErrorCorrectionLevel::H));
|
|
41
|
+
assertNotNull(&version->getECBlocksForLevel(ErrorCorrectionLevel::L));
|
|
42
|
+
assertNotNull(&version->getECBlocksForLevel(ErrorCorrectionLevel::M));
|
|
43
|
+
assertNotNull(&version->getECBlocksForLevel(ErrorCorrectionLevel::Q));
|
|
44
|
+
CPPUNIT_ASSERT_EQUAL(false, version->buildFunctionPattern() == 0);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
CPPUNIT_TEST_SUITE_REGISTRATION(VersionTest);
|
|
49
|
+
|
|
50
|
+
void VersionTest::testVersionForNumber() {
|
|
51
|
+
for (int i = 1; i <= (int)Version::VERSIONS.size(); i++) {
|
|
52
|
+
Version *v = Version::VERSIONS[i-1];
|
|
53
|
+
CPPUNIT_ASSERT_EQUAL((int)i, v->getVersionNumber());
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
Version::getVersionForNumber(0);
|
|
58
|
+
CPPUNIT_FAIL("Should have thrown an exception");
|
|
59
|
+
} catch (zxing::ReaderException const& re) {
|
|
60
|
+
// good
|
|
61
|
+
}
|
|
62
|
+
for (int i = 1; i <= 40; i++) {
|
|
63
|
+
checkVersion(Version::getVersionForNumber(i), i, 4*i + 17);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
void VersionTest::testGetProvisionalVersionForDimension() {
|
|
68
|
+
for (int i = 1; i <= 40; i++) {
|
|
69
|
+
int dimension = 4 * i + 17;
|
|
70
|
+
Version *v = Version::getProvisionalVersionForDimension(dimension);
|
|
71
|
+
int vi = v->getVersionNumber();
|
|
72
|
+
CPPUNIT_ASSERT_EQUAL(i, vi);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
void VersionTest::testDecodeVersionInformation() {
|
|
77
|
+
// Spot check
|
|
78
|
+
CPPUNIT_ASSERT_EQUAL(7, Version::decodeVersionInformation(0x07C94)->getVersionNumber());
|
|
79
|
+
CPPUNIT_ASSERT_EQUAL(12, Version::decodeVersionInformation(0x0C762)->getVersionNumber());
|
|
80
|
+
CPPUNIT_ASSERT_EQUAL(17, Version::decodeVersionInformation(0x1145D)->getVersionNumber());
|
|
81
|
+
CPPUNIT_ASSERT_EQUAL(22, Version::decodeVersionInformation(0x168C9)->getVersionNumber());
|
|
82
|
+
CPPUNIT_ASSERT_EQUAL(27, Version::decodeVersionInformation(0x1B08E)->getVersionNumber());
|
|
83
|
+
CPPUNIT_ASSERT_EQUAL(32, Version::decodeVersionInformation(0x209D5)->getVersionNumber());
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|