MCSerializationTest.st
author Claus Gittinger <cg@exept.de>
Mon, 14 May 2018 02:21:18 +0200
changeset 1048 582b3a028cbc
parent 333 ace406dcc3fd
permissions -rw-r--r--
#FEATURE by cg class: MCMethodDefinition changed: #postloadOver:

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

MCTestCase subclass:#MCSerializationTest
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'Monticello-Tests'
!


!MCSerializationTest methodsFor:'asserting'!

assertClass: readerClass providesServices: labels
	| services suffix |
	suffix := readerClass extension.
	self assert: (FileList isReaderNamedRegistered: readerClass name).
	services := readerClass fileReaderServicesForFile: 'foo' suffix: suffix.
	self assert: ((services collect: [:service | service buttonLabel]) includesAllOf: labels)
!

assertDependenciesMatchWith:writerClass 
    |stream readerClass expected actual|

    readerClass := writerClass readerClass.
    expected := self mockVersionWithDependencies.
    stream := RWBinaryOrTextStream on:ByteArray new.
    writerClass fileOut:expected on:stream.
    actual := (readerClass on:stream reset) dependencies.
    self assert:actual = expected dependencies.

    "Modified: / 12-09-2010 / 13:16:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

assertExtensionProvidedBy: aClass
	self shouldnt: [aClass readerClass extension] raise: Exception.
!

assertSnapshotsMatchWith:writerClass 
    |readerClass expected stream actual|

    readerClass := writerClass readerClass.
    expected := self mockSnapshot.
    stream := RWBinaryOrTextStream on:String new.
    (writerClass on:stream) writeSnapshot:expected.
    actual := readerClass snapshotFromStream:stream reset.
    self assertSnapshot:actual matches:expected.

    "Modified: / 12-09-2010 / 13:17:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

assertVersionInfosMatchWith:writerClass 
    |stream readerClass expected actual|

    readerClass := writerClass readerClass.
    expected := self mockVersion.
    stream := RWBinaryOrTextStream on:ByteArray new.
    writerClass fileOut:expected on:stream.
    actual := readerClass versionInfoFromStream:stream reset.
    self assert:actual = expected info.

    "Modified: / 12-09-2010 / 13:15:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

assertVersionsMatchWith:writerClass 
    |stream readerClass expected actual|

    readerClass := writerClass readerClass.
    expected := self mockVersion.
    stream := RWBinaryOrTextStream on:ByteArray new.
    writerClass fileOut:expected on:stream.
    actual := readerClass versionFromStream:stream reset.
    self assertVersion:actual matches:expected.

    "Modified: / 11-09-2010 / 19:42:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!MCSerializationTest methodsFor:'mocks'!

mockDiffyVersion
	| repos workingCopy base next |
	repos := MCDictionaryRepository new.
	workingCopy := MCWorkingCopy forPackage: self mockPackage.
	workingCopy repositoryGroup addRepository: repos.
	MCRepositoryGroup default removeRepository: repos.
	base := self mockVersion.
	repos storeVersion: base.
	self change: #a toReturn: 'a2'.
	next := self mockVersionWithAncestor: base.
	^ next asDiffAgainst: base	
! !

!MCSerializationTest methodsFor:'testing'!

__testMcdSerialization
    |stream expected actual|

    expected := self mockDiffyVersion.
    stream := RWBinaryOrTextStream on:ByteArray new.
    MCMcdWriter fileOut:expected on:stream.
    actual := MCMcdReader versionFromStream:stream reset.
    self assertVersion:actual matches:expected.

    "Created: / 11-09-2010 / 19:42:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

__testStSerialization
        self assertSnapshotsMatchWith: MCStWriter.

    "Created: / 12-09-2010 / 15:26:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

testMczSerialization
	self assertVersionsMatchWith: MCMczWriter.
	self assertExtensionProvidedBy: MCMczWriter.
	self assertVersionInfosMatchWith: MCMczWriter.
	self assertDependenciesMatchWith: MCMczWriter.
! !

!MCSerializationTest class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCSerializationTest.st,v 1.1 2011-08-20 12:27:19 cg Exp $'
!

version_CVS
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCSerializationTest.st,v 1.1 2011-08-20 12:27:19 cg Exp $'
!

version_SVN
    ^ '§Id: MCSerializationTest.st 8 2010-09-12 17:15:52Z vranyj1 §'
! !