test/MCSerializationTest.st
changeset 26 14f7a1c2169f
child 824 d4cbbb03d3f3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/MCSerializationTest.st	Wed Nov 22 14:02:45 2006 +0100
@@ -0,0 +1,106 @@
+"{ Package: 'stx:goodies/monticello/test' }"
+
+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: String new.
+	writerClass fileOut: expected on: stream.
+	actual _ (readerClass on: stream reset) dependencies.
+	self assert: actual = expected dependencies.
+!
+
+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.
+!
+
+assertVersionInfosMatchWith: writerClass
+	| stream readerClass expected actual |
+	readerClass _ writerClass readerClass.
+	expected _ self mockVersion.
+	stream _ RWBinaryOrTextStream on: String new.
+	writerClass fileOut: expected on: stream.
+	actual _ readerClass versionInfoFromStream: stream reset.
+	self assert: actual = expected info.
+!
+
+assertVersionsMatchWith: writerClass
+	| stream readerClass expected actual |
+	readerClass _ writerClass readerClass.
+	expected _ self mockVersion.
+	stream _ RWBinaryOrTextStream on: String new.
+	writerClass fileOut: expected on: stream.
+	actual _ readerClass versionFromStream: stream reset.
+	self assertVersion: actual matches: expected.
+! !
+
+!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: String new.
+	MCMcdWriter fileOut: expected on: stream.
+	actual _ MCMcdReader versionFromStream: stream reset.
+	self assertVersion: actual matches: expected.
+!
+
+testMczSerialization
+	self assertVersionsMatchWith: MCMczWriter.
+	self assertExtensionProvidedBy: MCMczWriter.
+	self assertVersionInfosMatchWith: MCMczWriter.
+	self assertDependenciesMatchWith: MCMczWriter.
+!
+
+testStSerialization
+	self assertSnapshotsMatchWith: MCStWriter.
+! !
+
+!MCSerializationTest class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/goodies/monticello/test/MCSerializationTest.st,v 1.1 2006-11-22 13:02:45 cg Exp $'
+! !