RegressionTests__Base64Tests.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 18:53:03 +0200
changeset 2327 bf482d49aeaf
parent 2137 f64e7778af86
child 2576 79690400ae34
permissions -rw-r--r--
#QUALITY by exept class: RegressionTests::StringTests added: #test82c_expanding

"{ Package: 'stx:goodies/regression' }"

"{ NameSpace: RegressionTests }"

TestCase subclass:#Base64Tests
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'tests-Regression-Files and Encodings'
!

!Base64Tests class methodsFor:'documentation'!

documentation
"
    documentation to be added.

    [author:]
        Claus Gittinger

    [instance variables:]

    [class variables:]

    [see also:]

"
! !

!Base64Tests class methodsFor:'queries'!

coveredClassNames
    "should be redefined to return a collection of classes which are tested by
     this suite/case.
     If not redefined, coveredPackageNames should be.

     These classes can be instrumented for coverage analysis,
     before running the suite to provide coverage analysis/report"

    ^ #( Base64Coder )

    "Created: / 06-07-2011 / 21:27:03 / cg"
    "Modified: / 21-03-2019 / 22:28:33 / Claus Gittinger"
! !

!Base64Tests methodsFor:'tests'!

test01_base64
    "samples from https://www.base64encode.org/"
    
    self assert:(Base64Coder encode:'') = ''.
    self assert:(Base64Coder encode:'a') = 'YQ=='.
    self assert:(Base64Coder encode:'aa') = 'YWE='.
    self assert:(Base64Coder encode:'aaa') = 'YWFh'.

    self assert:(Base64Coder encode:'bbba') = 'YmJiYQ=='.
    self assert:(Base64Coder encode:'bbbaa') = 'YmJiYWE='.
    self assert:(Base64Coder encode:'bbbaaa') = 'YmJiYWFh'.

    self assert:(Base64Coder encode:'cccbbba') = 'Y2NjYmJiYQ=='.
    self assert:(Base64Coder encode:'cccbbbaa') = 'Y2NjYmJiYWE='.
    self assert:(Base64Coder encode:'cccbbbaaa') = 'Y2NjYmJiYWFh'.

    1 to:20 do:[:len |
        0 to:255 do:[:byteValue |
            |original encodedString decodedString|
            
            original := ByteArray new:len withAll:byteValue.
            encodedString := Base64Coder encode:original.
            decodedString := Base64Coder decode:encodedString.
            self assert:(decodedString = original).

            original := String new:len withAll:byteValue asCharacter.
            encodedString := Base64Coder encode:original.
            decodedString := Base64Coder decodeAsString:encodedString.
            self assert:(decodedString = original).
        ]
    ].

    "Created: / 21-03-2019 / 22:20:31 / Claus Gittinger"
!

test02_base64
    "samples from https://www.base64encode.org/"
    
    self assert:(Base64Coder decodeAsString:'') = ''.
    self assert:(Base64Coder decodeAsString:'YQ==') = 'a'.
    self assert:(Base64Coder decodeAsString:'YWE=') = 'aa'.
    self assert:(Base64Coder decodeAsString:'YWFh') = 'aaa'.

    self assert:(Base64Coder decodeAsString:'YmJiYQ==') = 'bbba'.
    self assert:(Base64Coder decodeAsString:'YmJiYWE=') = 'bbbaa'.
    self assert:(Base64Coder decodeAsString:'YmJiYWFh') = 'bbbaaa'.

    self assert:(Base64Coder decodeAsString:'Y2NjYmJiYQ==') = 'cccbbba'.
    self assert:(Base64Coder decodeAsString:'Y2NjYmJiYWE=') = 'cccbbbaa'.
    self assert:(Base64Coder decodeAsString:'Y2NjYmJiYWFh') = 'cccbbbaaa'.

    "/ specials
    self assert:(Base64Coder decodeAsString:'===') = ''.
    self assert:(Base64Coder decodeAsString:'YQ=====') = 'a'.
    self assert:(Base64Coder decodeAsString:'YWE====') = 'aa'.
    self assert:(Base64Coder decodeAsString:'YWFh===') = 'aaa'.
    
    self assert:(Base64Coder decodeAsString:'YmJiYQ=====') = 'bbba'.
    self assert:(Base64Coder decodeAsString:'YmJiYWE====') = 'bbbaa'.
    self assert:(Base64Coder decodeAsString:'YmJiYWFh===') = 'bbbaaa'.

    self assert:(Base64Coder decodeAsString:'Y2NjYmJiYQ=====') = 'cccbbba'.
    self assert:(Base64Coder decodeAsString:'Y2NjYmJiYWE====') = 'cccbbbaa'.
    self assert:(Base64Coder decodeAsString:'Y2NjYmJiYWFh===') = 'cccbbbaaa'.

    self assert:(Base64Coder decodeAsString:'======') = ''.
    self assert:(Base64Coder decodeAsString:'YQ========') = 'a'.
    self assert:(Base64Coder decodeAsString:'YWE=======') = 'aa'.
    self assert:(Base64Coder decodeAsString:'YWFh======') = 'aaa'.

    self assert:(Base64Coder decodeAsString:'YmJiYQ========') = 'bbba'.
    self assert:(Base64Coder decodeAsString:'YmJiYWE=======') = 'bbbaa'.
    self assert:(Base64Coder decodeAsString:'YmJiYWFh======') = 'bbbaaa'.

    self assert:(Base64Coder decodeAsString:'Y2NjYmJiYQ========') = 'cccbbba'.
    self assert:(Base64Coder decodeAsString:'Y2NjYmJiYWE=======') = 'cccbbbaa'.
    self assert:(Base64Coder decodeAsString:'Y2NjYmJiYWFh======') = 'cccbbbaaa'.

    "Created: / 21-03-2019 / 23:49:44 / Claus Gittinger"
! !

!Base64Tests class methodsFor:'documentation'!

version_CVS
    ^ '$Header$'
! !