Personal tools
You are here: Home University 2nd Licence Génie logiciel ConfMan Testing Package (html)
Document Actions

ConfMan Testing Package (html)

by jfroche last modified 2006-11-20 01:01

Conference Manager written in Smalltalk - These are the testcase classes

ConfMan-Test.st

'From VisualWorks® NonCommercial, 7.3.1 of April 20, 2005 on December 26, 2005 at 1:19:39 am'!
"Package ConfMan-Test*"!


Smalltalk defineClass: #ArticleTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'anArticle '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

ArticleTest comment:
'ArticleTest

Instance Variables:
	anArticle	<Object | Proxy>	description of anArticle

'!

Smalltalk defineClass: #CommentTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aComment '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

CommentTest comment:
'CommentTest 

Instance Variables:
	aComment	<Comment>	description of aComment

'!

Smalltalk defineClass: #KeywordsContainerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #objects
	private: false
	instanceVariableNames: 'keywordsContainer '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

KeywordsContainerTest comment:
'KeywordsContainerTest 

Instance Variables:
	keywordsContainer	<KeywordsContainer>	description of keywordsContainer

'!

Smalltalk defineClass: #RoomsContainerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aRoomsContainer '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan-Test'!

Smalltalk defineClass: #ConferenceContainerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aConferenceContainer '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

ConferenceContainerTest comment:
'ConferenceContainerTest 

Instance Variables:
	aConferenceContainer	<ConferenceContainer>	description of aConferenceContainer

'!

Smalltalk defineClass: #ScheduleTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aSchedule '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan-Test'!

Smalltalk defineClass: #UserTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'anUser '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

UserTest comment:
'UserTest 

Instance Variables:
	anUser	<User>	description of anUser

'!

Smalltalk defineClass: #MembershipManagerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'memberMgr '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

MembershipManagerTest comment:
'MembershipManagerTest 

Instance Variables:
	memberMgr	<MembershipManager>	description of memberMgr

'!

Smalltalk defineClass: #GroupManagerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aGroupManager '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

GroupManagerTest comment:
'GroupManagerTest

Instance Variables:
	aGroupManager	<GroupManager>	description of aGroupManager

'!

Smalltalk defineClass: #ConferenceManagerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aConferenceManager '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

ConferenceManagerTest comment:
'ConferenceManagerTest 

Instance Variables:
	aConferenceManager	<ConferenceManager>	description of aConferenceManager

'!

Smalltalk defineClass: #TalkTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aTalk '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan-Test'!

Smalltalk defineClass: #GroupTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aGroup '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

GroupTest comment:
'GroupTest 

Instance Variables:
	aGroup	<Conference | Group | User>	description of aGroup

'!

Smalltalk defineClass: #SecureObjectTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'anObject '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

SecureObjectTest comment:
'SecureObjectTest 

Instance Variables:
	anObject	<SecureObject | WAPermissionManagerView>	description of anObject

'!

Smalltalk defineClass: #UserManagerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'anUserManager '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

UserManagerTest comment:
'UserManagerTest 

Instance Variables:
	anUserManager	<UserManager>	description of anUserManager

'!

Smalltalk defineClass: #LocationsContainerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aLocationsContainer '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan-Test'!

Smalltalk defineClass: #ArticleContainerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'anArticleContainer '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

ArticleContainerTest comment:
'ArticleContainerTest

Instance Variables:
	anArticleContainer	<Object | Proxy>	description of anArticleContainer

'!

Smalltalk defineClass: #ConferenceTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aConference '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

ConferenceTest comment:
'ConferenceTest 

Instance Variables:
	aConference	<Conference>	description of aConference

'!

Smalltalk defineClass: #PermissionManagerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'permMgr memberMgr '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

PermissionManagerTest comment:
'PermissionManagerTest 

Instance Variables:
	memberMgr	<MembershipManager>	description of memberMgr
	permMgr	<PermissionManager>	description of permMgr

'!

Smalltalk defineClass: #LocationTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aLocation '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan-Test'!

Smalltalk defineClass: #CommentContainerTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #objects
	private: false
	instanceVariableNames: 'aCommentContainer '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan'!

CommentContainerTest comment:
'CommentContainerTest 

Instance Variables:
	aCommentContainer	<Object | Proxy>	description of aCommentContainer

'!

Smalltalk defineClass: #RoomTest
	superclass: #{XProgramming.SUnit.TestCase}
	indexedType: #none
	private: false
	instanceVariableNames: 'aRoom '
	classInstanceVariableNames: ''
	imports: ''
	category: 'ConfMan-Test'!






















!ConferenceTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!ConferenceTest methodsFor: 'testing'!

testConferenceLecturer
	| user1 |
	user1 := (User new initialize)
				name: 'user1';
				login: 'login'.
	aConference lecturer: user1 login.
	self assert: (aConference membershipManager isMemberOfGroup: 'Lecturers'
				userLogin: 'login')!

testConferenceArticleContainer
	| artCont |
	artCont := ArticleContainer new initialize.
	aConference articleContainer: artCont.
	self assert: aConference articleContainer = artCont!

testConferenceAddKeyword
	aConference addKeyword: 'key1'.
	aConference addKeyword: 'key2'.
	aConference addKeyword: 'key3'.
	self assert: (aConference keywords includes: 'key1').
	self assert: (aConference keywords includes: 'key2').
	self assert: (aConference keywords includes: 'key3')!

testConferenceArticleDeadline
	| aDate |
	aDate := Date 
				newDay: 25
				month: 'December'
				year: 2005.
	aConference articleDeadline: aDate.
	self assert: aConference articleDeadline = aDate!

testConferenceName
	aConference name: 'conference'.
	self assert: aConference name = 'conference'!

testConferenceInitGroups
	self 
		assert: (aConference membershipManager groupDictionary 
				includesKey: 'Reviewer') .
	self 
		assert: (aConference membershipManager groupDictionary 
				includesKey: 'Lecturers')!

testConferenceValidate
	| user1 |
	self should: [aConference validate] raise: TestResult error.
	aConference name: 'user1'.
	aConference articleDeadline: (Date 
				newDay: 1
				month: 'January'
				year: 2010).
	aConference commentsDeadline: (Date 
				newDay: 2
				month: 'January'
				year: 2010).
	aConference notificationDeadline: (Date 
				newDay: 3
				month: 'January'
				year: 2010).
	aConference beginDate: (Date 
				newDay: 4
				month: 'January'
				year: 2010).
	aConference endDate: (Date 
				newDay: 5
				month: 'January'
				year: 2010).
	user1 := (User new initialize)
				name: 'user1';
				login: 'login'.
	aConference lecturer: user1 login.
	self shouldnt: [aConference validate] raise: TestResult error.
	aConference name: nil.
	self should: [aConference validate] raise: TestResult error.
	aConference name: 'user1'.
	aConference articleDeadline: (Date 
				newDay: 1
				month: 'January'
				year: 2000).
	self should: [aConference validate] raise: TestResult error.
	aConference articleDeadline: (Date 
				newDay: 1
				month: 'January'
				year: 2010).
	aConference commentsDeadline: (Date 
				newDay: 2
				month: 'January'
				year: 2009).
	self should: [aConference validate] raise: TestResult error.
	aConference commentsDeadline: (Date 
				newDay: 2
				month: 'January'
				year: 2010).
	aConference notificationDeadline: (Date 
				newDay: 3
				month: 'January'
				year: 2009).
	self should: [aConference validate] raise: TestResult error.
	aConference notificationDeadline: (Date 
				newDay: 3
				month: 'January'
				year: 2010).
	aConference beginDate: (Date 
				newDay: 4
				month: 'January'
				year: 2009).
	self should: [aConference validate] raise: TestResult error.
	aConference beginDate: (Date 
				newDay: 4
				month: 'January'
				year: 2010).
	aConference endDate: (Date 
				newDay: 5
				month: 'January'
				year: 2009).
	self should: [aConference validate] raise: TestResult error.
	aConference endDate: (Date 
				newDay: 5
				month: 'January'
				year: 2010).
	aConference lecturer: nil.
	self should: [aConference validate] raise: TestResult error!

testCommentsDeadline
	| aDate |
	aDate := Date 
				newDay: 25
				month: 'December'
				year: 2005.
	aConference commentsDeadline: aDate.
	self assert: aConference commentsDeadline = aDate!

testConferenceExpirationDate
	| aDate |
	aDate := Date 
				newDay: 25
				month: 'December'
				year: 2005.
	aConference expirationDate: aDate.
	self assert: aConference expirationDate = aDate!

testConferenceNotificationDeadline
	| aDate |
	aDate := Date 
				newDay: 25
				month: 'December'
				year: 2005.
	aConference notificationDeadline: aDate.
	self assert: aConference notificationDeadline = aDate!

testConferenceInitPermissions
	self assert: (aConference permissionManager permissionDictionary 
				includesKey: 'View').
	self 
		assert: ((aConference permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self 
		assert: ((aConference permissionManager permissionDictionary at: 'View') 
				includes: 'Logged User').
	self 
		assert: ((aConference permissionManager permissionDictionary at: 'View') 
				includes: 'Anonymous').
	self assert: (aConference permissionManager permissionDictionary 
				includesKey: 'Modify').
	self 
		assert: ((aConference permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin').
	self 
		assert: ((aConference permissionManager permissionDictionary at: 'Modify') 
				includes: 'Lecturers').
	self assert: (aConference permissionManager permissionDictionary 
				includesKey: 'Mail article author').
	self 
		assert: ((aConference permissionManager permissionDictionary at: 'Mail article author') 
				includes: 'Lecturers').
	self assert: (aConference permissionManager permissionDictionary 
				includesKey: 'Review').
	self 
		assert: ((aConference permissionManager permissionDictionary at: 'Review') 
				includes: 'Reviewer').
	self assert: (aConference permissionManager permissionDictionary 
				includesKey: 'Delete').
	self 
		assert: ((aConference permissionManager permissionDictionary at: 'Delete') 
				includes: 'Admin').
	self 
		assert: ((aConference permissionManager permissionDictionary at: 'Delete') 
				includes: 'Lecturers')!

testConferenceKeywords
	| keys |
	keys := Set new.
	keys add: 'key1'.
	keys add: 'key2'.
	aConference keywords: keys.
	self assert: (aConference keywords includes: 'key1').
	self assert: (aConference keywords includes: 'key2').!

testConferenceModify
	| conf1 |
	conf1 := Conference new initialize.
	conf1 name: 'conf1'.
	conf1 keywords: #('key1' 'key2').
	conf1 articleDeadline: (Date 
				newDay: 25
				month: 'December'
				year: 2005).
	conf1 commentsDeadline: (Date 
				newDay: 25
				month: 'December'
				year: 2005).
	conf1 notificationDeadline: (Date 
				newDay: 25
				month: 'December'
				year: 2005).
	conf1 beginDate: (Date 
				newDay: 25
				month: 'December'
				year: 2005).
	conf1 endDate: (Date 
				newDay: 25
				month: 'December'
				year: 2005).
	conf1 expirationDate: (Date 
				newDay: 25
				month: 'December'
				year: 2005).
	conf1 lecturer: 'root'.
	aConference modify: conf1.
	self assert: aConference name = 'conf1'.
	self assert: (aConference keywords includes: 'key1').
	self assert: (aConference keywords includes: 'key2').
	self 
		assert: aConference articleDeadline = (Date 
						newDay: 25
						month: 'December'
						year: 2005).
	self 
		assert: aConference commentsDeadline = (Date 
						newDay: 25
						month: 'December'
						year: 2005).
	self 
		assert: aConference notificationDeadline = (Date 
						newDay: 25
						month: 'December'
						year: 2005).
	self 
		assert: aConference beginDate = (Date 
						newDay: 25
						month: 'December'
						year: 2005).
	self 
		assert: aConference endDate = (Date 
						newDay: 25
						month: 'December'
						year: 2005).
	self 
		assert: aConference expirationDate = (Date 
						newDay: 25
						month: 'December'
						year: 2005).
	self assert: aConference lecturer = 'root'!

testConferenceBeginDate
	| aDate |
	aDate := Date 
				newDay: 25
				month: 'December'
				year: 2005.
	aConference beginDate: aDate.
	self assert: aConference beginDate = aDate!

testConferenceEndDate
	| aDate |
	aDate := Date 
				newDay: 25
				month: 'December'
				year: 2005.
	aConference endDate: aDate.
	self assert: aConference endDate = aDate!

testConferenceInit
	self assert: aConference name = nil.
	self assert: aConference keywords isEmpty" size = 0".
	self assert: aConference articleContainer size = 0.
      self assert: (aConference membershipManager isGroup: 'Reviewer')  .
	self assert: (aConference membershipManager isGroup: 'Lecturers') .
	self assert: (aConference membershipManager isGroup: 'Logged User') .
	self assert: (aConference membershipManager isGroup: 'Anonymous') .
	self assert: (aConference membershipManager isGroup: 'Admin') .
	self assert: aConference articleContainer size = 0.
	self assert: aConference articleDeadline size = 0.
	self assert: aConference beginDate isNil.
	self assert: aConference commentsDeadline isNil.
	self assert: aConference endDate isNil.
	self assert: aConference keywords size = 0.
	self assert: aConference lecturer isNil.
	self assert: aConference name isNil.
	self assert: aConference notificationDeadline isNil! !

!ConferenceTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Edit the following to properly initialize instance variables ***"
	aConference := nil.
	" *** And replace this comment with additional initialization code *** "
	^self!

setUp
	aConference := Conference new initialize.! !


!ScheduleTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!ScheduleTest methodsFor: 'testing'!

testScheduleAddTalk
	| talk |
	talk := Talk new initialize article: 'article'.
	aSchedule addTalk: talk.
	self assert: (aSchedule talks includes: talk)!

testScheduleInit
	aSchedule talks isEmpty! !

!ScheduleTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Replace this comment with the appropriate initialization code *** "
	^self!

setUp
	aSchedule := Schedule new initialize.! !


!RoomTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!RoomTest methodsFor: 'testing'!

testRoomCapacity
	aRoom capacity: 1.
	self assert: aRoom capacity = 1!

testRoomName
	aRoom name: 'name'.
	self assert: aRoom name = 'name'!

testRoomInitPermissions
	self 
		assert: (aRoom permissionManager permissionDictionary includesKey: 'View').
	self assert: (aRoom permissionManager permissionDictionary 
				includesKey: 'Delete').
	self assert: ((aRoom permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self assert: ((aRoom permissionManager permissionDictionary at: 'View') 
				includes: 'Logged User').
	self 
		assert: ((aRoom permissionManager permissionDictionary at: 'Delete') 
				includes: 'Admin').
	self 
		assert: ((aRoom permissionManager permissionDictionary at: 'Delete') 
				includes: 'Owner')!

testRoomValidate
	self should: [aRoom validate] raise: TestResult error.
	aRoom name: 'name'.
	self should: [aRoom validate] raise: TestResult error.
	aRoom capacity: 1.
	self shouldnt: [aRoom validate] raise: TestResult error! !

!RoomTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Edit the following to properly initialize instance variables ***"
	aRoom := nil.
	" *** And replace this comment with additional initialization code *** "
	^self!

setUp
	aRoom := Room new initialize.! !


!TalkTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!TalkTest methodsFor: 'testing'!

testTalkDateTimeBegin
	| aDate |
	aDate := Squeak.DateAndTime 
				year: 2005
				month: 12
				day: 25
				hour: 0
				minute: 0.
	aTalk dateTimeBegin: aDate.
	self assert: aTalk dateTimeBegin = aDate!

testTalkArticle
	aTalk article: 'article'.
	self assert: aTalk article = 'article'!

testTalkValidate
	aTalk dateTimeEnd: (Date 
				newDay: 1
				month: 'January'
				year: 2010).
	aTalk dateTimeBegin: (Date 
				newDay: 2
				month: 'January'
				year: 2010).
	self should: [aTalk validate] raise: TestResult error.
	aTalk dateTimeEnd: (Date 
				newDay: 3
				month: 'January'
				year: 2010).
	self shouldnt: [aTalk validate] raise: TestResult error.!

testTalkDateTimeEnd
	| aDate |
	aDate := Squeak.DateAndTime 
				year: 2005
				month: 12
				day: 25
				hour: 0
				minute: 0.
	aTalk dateTimeEnd: aDate.
	self assert: aTalk dateTimeEnd = aDate!

testTalkRoom
	aTalk room: 'room'.
	self assert: aTalk room = 'room'! !

!TalkTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Replace this comment with the appropriate initialization code *** "
	^self!

setUp
	aTalk := Talk new initialize.! !


!ConferenceContainerTest methodsFor: 'testing'!

testConfConGetConfObjects
	| conf |
	conf := Conference new initialize name: 'conf1'.
	aConferenceContainer addConference: conf.
	self assert: aConferenceContainer getConferencesObjects size = 1.
	self assert: (aConferenceContainer getConferencesObjects includes: conf)!

testConfConInit
	self assert: aConferenceContainer conferences isEmpty.
	self assert: aConferenceContainer sharedKeywords isEmpty!

testConfConGetConfId
	| conf  conf2|
	conf := Conference new initialize name: 'conf1'.
	conf2 := Conference new initialize name: 'conf2'.
	aConferenceContainer addConference: conf.
	aConferenceContainer addConference: conf2.
	self assert: (aConferenceContainer getConferencesId includes: 1) .
	self assert: (aConferenceContainer getConferencesId includes: 2)!

testConfConSharedKeywords
	"Testing setting of conferenceManager shared keywords"
	| aSet |
	aSet := Set new.
	aSet add: 'testsharedkeyb'.
	aSet add: 'testsharedkeya'.
	aConferenceContainer sharedKeywords: aSet.
	self assert: (aConferenceContainer sharedKeywords includes: 'testsharedkeyb').
	self assert: (aConferenceContainer sharedKeywords includes: 'testsharedkeya').
	self assert: aConferenceContainer sharedKeywords size = 2!

testConfConDeleteConference
	| conf |
	conf := Conference new initialize name: 'conf1'.
	aConferenceContainer addConference: conf.
	aConferenceContainer deleteConference: conf.
	self assert: aConferenceContainer conferences isEmpty!

testConfConInitPerm
	self 
		assert: (aConferenceContainer permissionManager permissionDictionary 
				includesKey: 'View') .
	self 
		assert: ((aConferenceContainer permissionManager permissionDictionary 
				at: 'View')
				includes: 'Admin';
				includes: 'Logged User';
				includes: 'Anonymous').
	self 
		assert: (aConferenceContainer permissionManager permissionDictionary 
				includesKey: 'Modify') .
	self 
		assert: ((aConferenceContainer permissionManager permissionDictionary 
				at: 'Modify') includes: 'Admin';
				includes: 'Logged User').
	self 
		assert: (aConferenceContainer permissionManager permissionDictionary 
				includesKey: 'Add Conference') .
	self 
		assert: ((aConferenceContainer permissionManager permissionDictionary 
				at: 'Add Conference') includes: 'Admin';
				includes: 'Logged User').!

testConfConHasConference
	| conf |
	self deny: (aConferenceContainer hasConference) .
	conf := Conference new initialize name: 'conf1'.
	aConferenceContainer addConference: conf.
	self assert: (aConferenceContainer hasConference)!

testConfConAddConference
	| conf  conf2|
	conf := Conference new initialize name: 'conf1'.
	conf2 := Conference new initialize name: 'conf2'.
	aConferenceContainer addConference: conf.
	self assert: aConferenceContainer conferences size = 1.
	self assert: ((aConferenceContainer conferences) includes: conf).
	aConferenceContainer addConference: conf2.
	self assert: aConferenceContainer conferences size = 2.
	self assert: ((aConferenceContainer conferences) includes: conf2).
	aConferenceContainer addConference: conf2.
	self assert: aConferenceContainer conferences size = 3.
	self assert: ((aConferenceContainer conferences) includes: conf2).!

testConfConAddSharedKeywords
	"Testing setting of conferenceManager shared keywords"

	self assert: (aConferenceContainer sharedKeywords isEmpty ).
	aConferenceContainer addSharedKeyword: 'testsharedkeyb'.
	aConferenceContainer addSharedKeyword: 'testsharedkeya'.
	self assert: (aConferenceContainer sharedKeywords includes: 'testsharedkeya').
	self assert: (aConferenceContainer sharedKeywords size = 2).!

testConfConGetConf
	| conf |
	conf := Conference new initialize name: 'conf1'.
	aConferenceContainer addConference: conf.
	self assert: ((aConferenceContainer getConference: 1) ) = conf! !

!ConferenceContainerTest methodsFor: 'initialize-release'!

setUp
	"Setup up TestCase"

	aConferenceContainer := ConferenceContainer new initialize!

initialize
	^self! !


!CommentContainerTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!CommentContainerTest methodsFor: 'testing'!

testCommentContAddComment
	| comment |
	comment := Comment new initialize.
	aCommentContainer addComment: comment.
	self assert: (aCommentContainer comments includes: comment)!

testCommentContRemove
	| comment |
	comment := Comment new initialize.
	aCommentContainer addComment: comment.
	aCommentContainer deleteComment: comment.
	self assert: aCommentContainer size = 0!

testCommentContInit
	self assert: aCommentContainer size = 0!

testCommentContComments
	| conts comment |
	conts := Set new.
	comment := Comment new initialize.
	conts add: comment.
	aCommentContainer comments: conts.
	self assert: (aCommentContainer comments includes: comment)!

testCommentContInitPermissions
	self assert: (aCommentContainer permissionManager permissionDictionary 
				includesKey: 'View').
	self 
		assert: ((aCommentContainer permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self 
		assert: ((aCommentContainer permissionManager permissionDictionary at: 'View') 
				includes: 'Logged User').
	self assert: (aCommentContainer permissionManager permissionDictionary 
				includesKey: 'Modify').
	self 
		assert: ((aCommentContainer permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin').
	self assert: (aCommentContainer permissionManager permissionDictionary 
				includesKey: 'Add Comment').
	self 
		assert: ((aCommentContainer permissionManager permissionDictionary at: 'Add Comment') 
				includes: 'Admin').
	self 
		assert: ((aCommentContainer permissionManager permissionDictionary at: 'Add Comment') 
				includes: 'Logged User')!

testCommentContHasComment
	| comment |
	self deny: aCommentContainer hasComment .
	comment := Comment new initialize.
	aCommentContainer addComment: comment.
	self assert: aCommentContainer hasComment! !

!CommentContainerTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Edit the following to properly initialize instance variables ***"
	aCommentContainer := nil.
	" *** And replace this comment with additional initialization code *** "
	^self!

setUp
	aCommentContainer := CommentContainer new initialize.! !


!ArticleTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!ArticleTest methodsFor: 'testing'!

testArticleComments
	| comment |
	comment := Comment new initialize.
	anArticle comments: comment.
	self assert: (anArticle comments = comment)!

testArticleUser
	| user |
	user := User new initialize name: 'usr'; login: 'login'.
	anArticle user: user.
	self assert: anArticle user = user.
	self 
		assert: (anArticle membershipManager isMemberOfGroup: 'Owner'
				userLogin: 'login')!

testArticleInitPermissions
	self assert: (anArticle permissionManager permissionDictionary 
				includesKey: 'View').
	self 
		assert: ((anArticle permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self 
		assert: ((anArticle permissionManager permissionDictionary at: 'View') 
				includes: 'Logged User').
	self 
		assert: ((anArticle permissionManager permissionDictionary at: 'View') 
				includes: 'Anonymous').
	self assert: (anArticle permissionManager permissionDictionary 
				includesKey: 'Modify').
	self 
		assert: ((anArticle permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin').
	self 
		assert: ((anArticle permissionManager permissionDictionary at: 'Modify') 
				includes: 'Owner').
	self assert: (anArticle permissionManager permissionDictionary 
				includesKey: 'Review').
	self 
		assert: ((anArticle permissionManager permissionDictionary at: 'Review') 
				includes: 'Acquire')!

testArticleKeywords
	| keys |
	keys := Set new.
	keys add: 'key1'.
	keys add: 'key2'.
	anArticle keywords: keys.
	self assert: (anArticle keywords includes: 'key1').
	self assert: (anArticle keywords includes: 'key2').!

testArticleModify
	"Tests the modification of an article"

	| anArt keys |
	keys := Set new.
	keys add: 'key1'.
	anArticle keywords: keys.
	anArticle title: 'title'.
	anArticle data: 'data1'.
	anArticle keywords: keys.
	anArt := Article new initialize.
	anArt title: 'title2'.
	anArt data: 'data2'.
	keys add: 'key2'.
	anArt keywords: keys.
	anArticle modify: anArt.
	self assert: (anArticle title = 'title2').
	self assert: anArticle data = 'data2'.
	self assert: (anArticle keywords includes: 'key2')!

testArticleInitGroups
self assert: (anArticle membershipManager isGroup: 'Owner')!

testArticleData
	anArticle data: 'plentyofdata'.
	self assert: anArticle data = 'plentyofdata'!

testArticleInit
	self assert: (anArticle keywords size = 0).
	self assert: (anArticle comments size = 0).!

testArticleTitle
	anArticle title: 'atitle'.
	self assert: (anArticle title = 'atitle').!

testArticleValidate
	self should: [anArticle validate] raise: TestResult error.
	anArticle title: 'title'.
	self should: [anArticle validate] raise: TestResult error.
	anArticle data: 'data'.
	self shouldnt: [anArticle validate] raise: TestResult error!

testAverageRating
	| aComment aComment2 |
	aComment := Comment new initialize rating: 2.
	aComment2 := Comment new initialize rating: 4.
	anArticle addComment: aComment.
	anArticle addComment: aComment2.
	self assert: (anArticle averageRating = 3).!

testArticleAddComment
	| aComment |
	aComment := Comment new initialize.
	anArticle addComment: aComment.
	self assert: (anArticle comments comments includes: aComment).! !

!ArticleTest methodsFor: 'initialize-release'!

setUp
	anArticle := Article new initialize.!

initialize
	anArticle := nil.
	^self! !


!ConferenceManagerTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!ConferenceManagerTest methodsFor: 'testing'!

testConfManConfContainer
	| aConfContainer |
	aConfContainer := ConferenceContainer new initialize.
	aConferenceManager confContainer: aConfContainer.
	self assert: aConferenceManager confContainer = aConfContainer!

testConfManGroupManager
	| aGroupManager |
	aGroupManager := GroupManager new initialize.
	aConferenceManager groupManager: aGroupManager.
	self assert: aConferenceManager groupManager = aGroupManager!

testConfManInit
	self assert: aConferenceManager confContainer size = 0.
	self assert: aConferenceManager userManager size = 1.
	self 
		assert: (aConferenceManager userManager getUser: 'root') login = 'root'.
	self assert: aConferenceManager groupManager size = 1.
	self assert: (aConferenceManager groupManager hasGroup: 'Admin')!

testConfManInitPermissions
	self 
		assert: (aConferenceManager permissionManager permissionDictionary 
				includesKey: 'View').
	self 
		assert: ((aConferenceManager permissionManager permissionDictionary 
				at: 'View')
				includes: 'Admin';
				includes: 'Anonymous').!

testConfManUserManager
	| aUserManager |
	aUserManager := UserManager new initialize.
	aConferenceManager userManager: aUserManager.
	self assert: aConferenceManager userManager = aUserManager! !

!ConferenceManagerTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Edit the following to properly initialize instance variables ***"
	aConferenceManager := nil.
	" *** And replace this comment with additional initialization code *** "
	^self!

setUp
	aConferenceManager := ConferenceManager new initialize.! !


!ArticleContainerTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!ArticleContainerTest methodsFor: 'testing'!

testArticleContArticles
	| conts article |
	conts := Set new.
	article := Article new initialize.
	conts add: article.
	anArticleContainer articles: conts.
	self assert: (anArticleContainer articles includes: article)!

testArticleContAddArticle
	| article |
	article := Article new initialize.
	anArticleContainer addArticle: article.
	self assert: (anArticleContainer articles includes: article)!

testArticleContHasArticle
	| art |
	self deny: anArticleContainer hasArticle.
	art := Comment new initialize.
	anArticleContainer addArticle: art.
	self assert: anArticleContainer hasArticle!

testArticleContDeleteArticle
	| article |
	article := Article new initialize.
	anArticleContainer addArticle: article.
	anArticleContainer deleteArticle: article.
	self assert: anArticleContainer size=0.!

testArticleContInitPermissions
	self assert: (anArticleContainer permissionManager permissionDictionary 
				includesKey: 'View').
	self 
		assert: ((anArticleContainer permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self 
		assert: ((anArticleContainer permissionManager permissionDictionary at: 'View') 
				includes: 'Logged User').
	self 
		assert: ((anArticleContainer permissionManager permissionDictionary at: 'View') 
				includes: 'Anonymous').
	self assert: (anArticleContainer permissionManager permissionDictionary 
				includesKey: 'Modify').
	self 
		assert: ((anArticleContainer permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin').
	self assert: (anArticleContainer permissionManager permissionDictionary 
				includesKey: 'Review').
	self 
		assert: ((anArticleContainer permissionManager permissionDictionary at: 'Review') 
				includes: 'Acquire').
	self assert: (anArticleContainer permissionManager permissionDictionary 
				includesKey: 'Add Article').
	self 
		assert: ((anArticleContainer permissionManager permissionDictionary at: 'Add Article') 
				includes: 'Admin').
	self 
		assert: ((anArticleContainer permissionManager permissionDictionary at: 'Add Article') 
				includes: 'Logged User')!

testArticleContInit
	self assert: anArticleContainer size=0! !

!ArticleContainerTest methodsFor: 'initialize-release'!

setUp
	anArticleContainer := ArticleContainer new initialize.!

initialize
	anArticleContainer := nil.
	^self! !


!CommentTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!CommentTest methodsFor: 'testing'!

testCommentRating
	aComment rating: 1.
	self assert: aComment rating = 1!

testCommentInitGroups
	self assert: (aComment membershipManager isGroup: 'Owner')!

testCommentInit
	self assert: (aComment membershipManager isGroup: 'Logged User') .
	self assert: (aComment membershipManager isGroup: 'Anonymous') .
	self assert: (aComment membershipManager isGroup: 'Owner') .
	self assert: (aComment membershipManager isGroup: 'Admin')!

testCommentUser
	aComment user: 'login'.
	self assert: aComment user = 'login'.
	self 
		assert: (aComment membershipManager isMemberOfGroup: 'Owner'
				userLogin: 'login')!

testCommentValidate
	self should: [aComment validate] raise: TestResult error.
	aComment text: 'test'.
	self shouldnt: [aComment validate] raise: TestResult error.!

testCommentInitPermissions
	self assert: (aComment permissionManager permissionDictionary 
				includesKey: 'View').
	self 
		assert: ((aComment permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self 
		assert: ((aComment permissionManager permissionDictionary at: 'View') 
				includes: 'Logged User').
	self assert: (aComment permissionManager permissionDictionary 
				includesKey: 'Modify').
	self 
		assert: ((aComment permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin').
	self 
		assert: ((aComment permissionManager permissionDictionary at: 'Modify') 
				includes: 'Owner')!

testCommentText
	aComment text: 'Test of a string'.
	self assert: aComment text = 'Test of a string'! !

!CommentTest methodsFor: 'initialize-release'!

setUp
	aComment := Comment new initialize.!

initialize
	aComment := nil.
	^self! !


!MembershipManagerTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!MembershipManagerTest methodsFor: 'testing'!

testInitialize
  self assert: (memberMgr groupDictionary ~= nil).
  self assert: (memberMgr groupDictionary includesKey: 'Logged User').
self assert: (memberMgr groupDictionary includesKey: 'Anonymous').!

testIsMemberOfGroup
   memberMgr setGroupMembers: #('chien' 'chat') groupName: 'mammiferes'.
   self assert: ((memberMgr isMemberOfGroup: 'mammiferes' userLogin: 'chien') ).
   self assert: ((memberMgr isMemberOfGroup: 'mammiferes' userLogin: 'chat') ).
   self deny: ((memberMgr isMemberOfGroup: 'mammiferes' userLogin: 'poisson') ).!

testSetGroupMembers
    memberMgr setGroupMembers: #('chien' 'chat') groupName: 'mammiferes'.
    self assert: ((memberMgr groupDictionary includesKey: 'mammiferes') ).
    self assert: ((memberMgr groupDictionary at: 'mammiferes') = #('chien' 'chat')).
    memberMgr setGroupMembers: #('chien' 'chat' 'vache') groupName: 'mammiferes'.
    self assert: ((memberMgr groupDictionary at: 'mammiferes') = #('chien' 'chat' 'vache')).!

testLoggedMemberOfGroup
   self assert: ((memberMgr isMemberOfGroup: 'Logged User' userLogin: 'anUserLogin') ).
   self deny: ((memberMgr isMemberOfGroup: 'Logged User' userLogin: nil) ).!

testIsGroup
    memberMgr setGroupMembers: #('chien' 'chat') groupName: 'mammiferes'.
    self assert: ((memberMgr isGroup: 'mammiferes') ).
    self deny: ((memberMgr isGroup: 'invertebrés') ).!

testGetGroups
	memberMgr addGroupMembers: 'name'.
	self assert: (memberMgr getGroups includes: 'name')!

testAnonymousMemberOfGroup
   self deny: ((memberMgr isMemberOfGroup: 'Anonymous' userLogin: 'anUserLogin') ).
   self assert: ((memberMgr isMemberOfGroup: 'Anonymous' userLogin: nil) ).!

testGetVisibleGroups
	memberMgr addGroupMembers: 'name'.
	self assert: (memberMgr getVisibleGroups includes: 'name')!

testAddGroupMembers
    memberMgr addGroupMembers: 'Drinkers'.
    self assert: (memberMgr groupDictionary includesKey: 'Drinkers').
    self assert: ((memberMgr groupDictionary at: 'Drinkers') = #())!

testAddGroupMembersToGroup
	| anUser |
	anUser := User new initialize.
	memberMgr addMemberToGroup: anUser group: 'grp'.
	self assert: (memberMgr groupDictionary includesKey: 'grp').
	self assert: ((memberMgr groupDictionary at: 'grp') = anUser)! !

!MembershipManagerTest methodsFor: 'initialize-release'!

setUp
    memberMgr := MembershipManager new initialize.!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Replace this comment with the appropriate initialization code *** "
	^self! !


!GroupManagerTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!GroupManagerTest methodsFor: 'testing'!

testGroupManagerInit
	self assert: (aGroupManager groupDictionary keys size = 0).!

testGetGroups
	aGroupManager addGroup: 'name'.
	self assert: (aGroupManager getGroups first ) name = 'name'.!

testHasGroup
	aGroupManager addGroup: 'group1'.	
	self assert: ((aGroupManager hasGroup: 'group1') ).	
	self deny: ((aGroupManager hasGroup: 'thing') ).!

testAddGroup
	aGroupManager addGroup: 'group1'.
	self assert: (aGroupManager groupDictionary keys size = 1).
      self assert: (((aGroupManager groupDictionary) at: 'group1') ~= nil).
      self assert: ((((aGroupManager groupDictionary) at: 'group1') name) = 'group1')!

testGroupManagerInitPermissions
	self assert: (aGroupManager permissionManager permissionDictionary includesKey: 'View').
	self assert: (aGroupManager permissionManager permissionDictionary includesKey: 'Modify').
	self assert: (aGroupManager permissionManager permissionDictionary includesKey: 'Add Group').
    	self assert: ((aGroupManager permissionManager permissionDictionary at: 'Add Group') includes: 'Admin').
    	self assert: ((aGroupManager permissionManager permissionDictionary at: 'View') includes:'Admin').
	self assert: ((aGroupManager permissionManager permissionDictionary at: 'Modify') includes:'Admin').! !

!GroupManagerTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Replace this comment with the appropriate initialization code *** "
	^self!

setUp
	aGroupManager := GroupManager new initialize.! !


!SecureObjectTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!SecureObjectTest methodsFor: 'testing'!

testInitPermissions
	self assert: (anObject permissionManager permissionDictionary 
				includesKey: 'View').
	self assert: (anObject permissionManager permissionDictionary 
				includesKey: 'Delete').
	self assert: (anObject permissionManager permissionDictionary 
				includesKey: 'View Security Manager').
	self 
		assert: ((anObject permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self 
		assert: ((anObject permissionManager permissionDictionary at: 'Delete') 
				includes: 'Admin').
	self 
		assert: ((anObject permissionManager permissionDictionary 
				at: 'View Security Manager') includes: 'Admin')!

testInitGroups
	self assert: (anObject membershipManager isMemberOfGroup: 'Admin' userLogin: 'root').! !

!SecureObjectTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Replace this comment with the appropriate initialization code *** "
	^self!

setUp
	"setting up a new UserManager at the beginning the each test"

	anObject := SecureObject new initialize.! !


!UserTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!UserTest methodsFor: 'testing'!

testUserSurname
	anUser surname: 'surname'.
	self assert: anUser surname = 'surname'!

testUserEmail
	anUser email: 'brol@machin.com'.
	self assert: anUser email = 'brol@machin.com'!

testUserLogin
	anUser login: 'login'.
	self assert: anUser login = 'login'!

testUserPassword
	anUser password: 'pass'.
	self assert: anUser password = 'pass'!

testUserInitPermissions
	self 
		assert: (anUser permissionManager permissionDictionary includesKey: 'View').
	self assert: ((anUser permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self assert: ((anUser permissionManager permissionDictionary at: 'View') 
				includes: 'Owner').
	self assert: (anUser permissionManager permissionDictionary 
				includesKey: 'Modify').
	self 
		assert: ((anUser permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin').
	self 
		assert: ((anUser permissionManager permissionDictionary at: 'Modify') 
				includes: 'Owner')!

testUserValidate
	self should: [anUser validate] raise: TestResult error.
	anUser name: 'name'.
	self should: [anUser validate] raise: TestResult error.
	anUser surname: 'surname'.
	self should: [anUser validate] raise: TestResult error.
	anUser login: 'login'.
	self should: [anUser validate] raise: TestResult error.
	anUser password: 'psswd'.
	self should: [anUser validate] raise: TestResult error.
	anUser email: 'mail'.
	self shouldnt: [anUser validate] raise: TestResult error!

testUserName
	anUser name: 'name'.
	self assert: anUser name = 'name'!

testUserAddSkill!

testUserInit
	self assert: anUser name isNil.
	self assert: anUser email isNil.
	self assert: anUser login isNil.
	self assert: anUser password isNil.
	self assert: anUser surname isNil!

testUserSkills! !

!UserTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Replace this comment with the appropriate initialization code *** "
	^self!

setUp
 "initialize the test"
  anUser := User new.! !


!LocationsContainerTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!LocationsContainerTest methodsFor: 'testing'!

testLocationContainerAddLocation
	| solbosh |
	solbosh := Location new initialize place: 'solbosh'.
	aLocationsContainer addLocation: solbosh.
	aLocationsContainer deleteLocation: solbosh.
	self assert: (aLocationsContainer getLocations isEmpty)!

testLocationContainerInitPermissions
	self 
		assert: (aLocationsContainer permissionManager permissionDictionary includesKey: 'View').
	self assert: (aLocationsContainer permissionManager permissionDictionary includesKey: 'Delete').
	self assert: (aLocationsContainer permissionManager permissionDictionary includesKey: 'Modify').
	self assert: (aLocationsContainer permissionManager permissionDictionary includesKey: 'Add Location').
	self assert: ((aLocationsContainer permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self assert: ((aLocationsContainer permissionManager permissionDictionary at: 'View') 
				includes: 'Logged User').
	self assert: ((aLocationsContainer permissionManager permissionDictionary at: 'View') 
				includes: 'Anonymous').
	self 
		assert: ((aLocationsContainer permissionManager permissionDictionary at: 'Delete') 
				includes: 'Admin').
	self 
		assert: ((aLocationsContainer permissionManager permissionDictionary at: 'Delete') 
				includes: 'Owner').
	self 
		assert: ((aLocationsContainer permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin').
	self 
		assert: ((aLocationsContainer permissionManager permissionDictionary at: 'Add Location') 
				includes: 'Admin').
	self 
		assert: ((aLocationsContainer permissionManager permissionDictionary at: 'Add Location') 
				includes: 'Logged User')!

testLocationContainerGetLocationsObjects
	| solbosh |
	solbosh := Location new initialize place: 'solbosh'.
	aLocationsContainer addLocation: solbosh.
	self assert: (aLocationsContainer getLocationsObjects includes: solbosh)!

testLocationContainerInit
	self assert: aLocationsContainer size = 0!

testLocationContainerGetLocations
	| solbosh |
	solbosh := Location new initialize place: 'solbosh'.
	aLocationsContainer addLocation: solbosh.
	self assert: (aLocationsContainer getLocations includes: 'solbosh')!

testLocationContainerHasLocation
	| solbosh |
	solbosh := Location new initialize place: 'solbosh'.
	aLocationsContainer addLocation: solbosh.
	self assert: aLocationsContainer hasLocation! !

!LocationsContainerTest methodsFor: 'initialize-release'!

setUp
	aLocationsContainer := LocationsContainer new initialize.!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Replace this comment with the appropriate initialization code *** "
	^self! !


!UserManagerTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!UserManagerTest methodsFor: 'testing'!

testAddUserName
	"Test adding a new user in the list of users"

	anUserManager 
		addUser: 'user1'
		surname: 'surname'
		login: 'login'
		password: 'psswd'
		email: 'mail'.
	self assert: (anUserManager usersDictionary keys size = 1).
      self assert: (((anUserManager usersDictionary) at: 'login') ~= nil).
      self assert: ((((anUserManager usersDictionary) at: 'login') surname) = 'surname').
	self assert: ((((anUserManager usersDictionary) at: 'login') password) = 'psswd').
	self assert: ((((anUserManager usersDictionary) at: 'login') email) = 'mail').!

testUserSharedSkills
	| user |
	user := Set new.
	user add: 'login'; add:'skill'.
	anUserManager sharedSkills: user.
	self assert: (anUserManager sharedSkills = user).!

testUserHasLogin
	| user1|
	user1 := User new initialize ;name: 'name1'; surname: 'surname1'; login: 'login1'.
      anUserManager addUser: user1.	
	self assert: ((anUserManager hasLogin: 'login1') ).	
	self deny: ((anUserManager hasLogin: 'brol') ).!

testGetUserObjects
	
      | user1 user2 |
	user1 := User new initialize name: 'name1'; surname: 'surname1'; login: 'login1'.
	user2 := User new initialize name: 'name2'; surname: 'surname2'; login: 'login2'.
      anUserManager addUser: user1; addUser: user2.
	self assert: (anUserManager getUserObjects includes: user1).
	self assert: (anUserManager getUserObjects includes: user2).!

testGetUserLogins
  "test the list of user login"
  | aSet |
	anUserManager 
		addUser: 'user1'
		surname: 'surname'
		login: 'login'
		password: 'psswd'
		email: 'mail'.
  anUserManager 
		addUser: 'user2'
		surname: 'surname2'
		login: 'login2'
		password: 'psswd2'
		email: 'mail2'.
  aSet := Set new.
  aSet add: 'login'; add: 'login2'.
  self assert: (anUserManager getUserLogins includes: 'login').
  self assert: (anUserManager getUserLogins includes: 'login2').!

testUserPersistance
	"Test the persistance of an User instance in a Dictionary"

	| anUser |
	anUserManager 
		addUser: 'user1'
		surname: 'surname'
		login: 'login'
		password: 'psswd'
		email: 'mail'.
	anUser := anUserManager getUser: 'login'.
	self assert: anUser name = 'user1'.
	anUser name: 'user2'.
	anUser := anUserManager getUser: 'login'.
	self assert: anUser name = 'user2'!

testUserModify
	| anUser |
	anUserManager	addUser: 'user1'
		surname: 'surname1'
		login: 'login'
		password: 'psswd1'
		email: 'mail1'.

	anUser := anUserManager getUser: 'login'.

	anUser name: 'user2'.
	anUser surname: 'surname2'.
	anUser password: 'psswd2'.
	anUser email: 'mail2'.
	anUserManager modifyUser: anUser.
	
	self assert: ((anUserManager getUser: 'login') name = 'user2').
	self assert: ((anUserManager getUser: 'login') surname = 'surname2').
	self assert: ((anUserManager getUser: 'login') password = 'psswd2').
	self assert: ((anUserManager getUser: 'login') email = 'mail2').!

testAddUser
	"Test adding a new user in the list of users"

	| user |
	user := User new initialize.
	user login: 'login'.
	anUserManager addUser: user.
	self assert: (anUserManager usersDictionary keys size = 1).
      self assert: (((anUserManager usersDictionary) at: 'login') ~= nil).
      self assert: ((((anUserManager usersDictionary) at: 'login') surname) isNil).
	self assert: ((((anUserManager usersDictionary) at: 'login') password) isNil).
	self assert: ((((anUserManager usersDictionary) at: 'login') email) isNil).!

testUserAddSharedSkill
	| skill |
	skill := KeywordsContainer new initialize.
	skill addKeyword: 'skill'.
	anUserManager addSharedSkill: skill.
	self assert: (anUserManager sharedSkills includes: skill).!

testGetUser
	"get a user by its login id"

	| anUser |
	anUserManager 
		addUser: 'user1'
		surname: 'surname'
		login: 'login'
		password: 'psswd'
		email: 'mail'.
	anUser := anUserManager getUser: 'login'.
	self assert: (anUser name = 'user1').!

testUserManagerInitPermissions
	self 
		assert: (anUserManager permissionManager permissionDictionary 
				includesKey: 'View') .
	self 
		assert: ((anUserManager permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self 
		assert: (anUserManager permissionManager permissionDictionary 
				includesKey: 'Modify') .
	self 
		assert: ((anUserManager permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin').
	self 
		assert: (anUserManager permissionManager permissionDictionary 
				includesKey: 'Add User') .
	self 
		assert: ((anUserManager permissionManager permissionDictionary at: 'Add User') 
				includes: 'Admin').
	self 
		assert: ((anUserManager permissionManager permissionDictionary at: 'Add User') 
				includes: 'Anonymous')!

testUserManagerInit
  "Test the initialization of the class"
	self assert: (anUserManager usersDictionary keys size = 0).
	self assert: (anUserManager sharedSkills size = 0 ).!

testUserDelete
	"Test adding a new user in the list of users"

	| user |
	user := User new initialize.
	user login: 'login'.
	anUserManager addUser: user.
	anUserManager deleteUser: user.
	self assert: anUserManager usersDictionary keys isEmpty! !

!UserManagerTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Replace this comment with the appropriate initialization code *** "
	^self!

setUp
	"setting up a new UserManager at the beginning the each test"

	anUserManager := UserManager new initialize! !


!KeywordsContainerTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!KeywordsContainerTest methodsFor: 'testing'!

testAddKeyword
     self assert: (keywordsContainer isEmpty).
     keywordsContainer addKeyword: 'key1'.
     self assert: (keywordsContainer size = 1).
     keywordsContainer addKeyword: 'key1'.
     self assert: (keywordsContainer size = 1).
     keywordsContainer addKeyword: ''.
     self assert: (keywordsContainer size = 1).! !

!KeywordsContainerTest methodsFor: 'initialize-release'!

setUp
   keywordsContainer := KeywordsContainer new initialize.
keywordsContainer sortBlock: [:x :y | x <= y].!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Replace this comment with the appropriate initialization code *** "
	^self! !


!PermissionManagerTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!PermissionManagerTest methodsFor: 'testing'!

testAddMemberToPermission
	memberMgr setGroupMembers: (Set with:'dog' with:'cat') groupName: 'mammals'.
	memberMgr setGroupMembers: (Set with:'pelican') groupName: 'birds'.
	permMgr setPermission: 'canEatFish' members: (Set with:'mammals').
	permMgr addMemberToPermission: 'canEatFish' member: 'birds'.
	self assert: ((permMgr permissionDictionary at: 'canEatFish')
				includes:'mammals'; includes:'birds')!

testHasPermission
	memberMgr setGroupMembers: #('chien' 'chat') groupName: 'mammiferes'.
	permMgr setPermission: 'canEatFish' members: #('mammiferes').
	self assert: (permMgr hasPermission: 'canEatFish' memberName: 'chien') .
	self assert: (permMgr hasPermission: 'canEatFish' memberName: 'chat') .
	self deny: (permMgr hasPermission: 'canEatFish' memberName: 'poisson') .

	permMgr setPermission: 'canEatFish' members: #('chatton').
	self assert: (permMgr hasPermission: 'canEatFish' memberName: 'chatton') .

	self should: [permMgr hasPermission: 'canEatMeat' memberName: 'dino']
		raise: TestResult error!

testAddPermission
    permMgr addPermission: 'Can Eat Meat'.
    self assert: (permMgr permissionDictionary includesKey: 'Can Eat Meat').
    self assert: ((permMgr permissionDictionary at: 'Can Eat Meat') = #())!

testInitialize
    self assert: (permMgr permissionDictionary ~= nil).
    self assert: (permMgr permissionDictionary isEmpty )!

testSetPermission
    memberMgr setGroupMembers: #('chien' 'chat') groupName: 'mammiferes'.
    permMgr setPermission: 'canEatFish' members: #('mammiferes').
    self assert: (permMgr permissionDictionary includesKey: 'canEatFish').
    self assert: ((permMgr permissionDictionary at: 'canEatFish') = #('mammiferes')).
    permMgr setPermission: 'canEatFish' members: #('mammiferes' 'baleine').
   self assert: ((permMgr permissionDictionary at: 'canEatFish') = #('mammiferes' 'baleine')).! !

!PermissionManagerTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Edit the following to properly initialize instance variables ***"
	permMgr := nil.
	" *** And replace this comment with additional initialization code *** "
	^self!

setUp
   memberMgr := MembershipManager new initialize.
   permMgr := PermissionManager new initialize membershipManager: memberMgr.! !


!RoomsContainerTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!RoomsContainerTest methodsFor: 'testing'!

testRoomsContainerDeleteRoom
	| solbosh |
	solbosh := Room new initialize.
	aRoomsContainer addRoom: solbosh.
	aRoomsContainer deleteRoom: solbosh.
	self assert: aRoomsContainer size = 0.!

testRoomsContainerInit
	self assert: aRoomsContainer size = 0!

testRoomsContainerInitPermissions
	self 
		assert: (aRoomsContainer permissionManager permissionDictionary includesKey: 'View').
	self assert: (aRoomsContainer permissionManager permissionDictionary 
				includesKey: 'Modify').
	self assert: (aRoomsContainer permissionManager permissionDictionary 
				includesKey: 'Add Room').
	self assert: ((aRoomsContainer permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self assert: ((aRoomsContainer permissionManager permissionDictionary at: 'View') 
				includes: 'Logged User').
	self 
		assert: ((aRoomsContainer permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin').
	self assert: ((aRoomsContainer permissionManager permissionDictionary at: 'Add Room') 
				includes: 'Admin').
	self assert: ((aRoomsContainer permissionManager permissionDictionary at: 'Add Room') 
				includes: 'Logged User').!

testRoomsContainerAddRoom
	| solbosh |
	solbosh := Room new initialize name: 'solbosh'.
	aRoomsContainer addRoom: solbosh.
	self assert: (aRoomsContainer rooms includes: solbosh)!

testRoomsContainerGetRoomsName
	| solbosh |
	solbosh := Room new initialize name: 'solbosh'.
	aRoomsContainer addRoom: solbosh.
	self assert: ((aRoomsContainer getRoomWithName: 'solbosh') = solbosh).
	self assert: ((aRoomsContainer getRoomWithName: 'thing') isNil)! !

!RoomsContainerTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Edit the following to properly initialize instance variables ***"
	aRoomsContainer := nil.
	" *** And replace this comment with additional initialization code *** "
	^self!

setUp
	aRoomsContainer := RoomsContainer new initialize.! !


!LocationTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!LocationTest methodsFor: 'testing'!

testLocationModify
	| aLoc |
	aLocation place: 'place'.
	aLocation address: 'address'.
	aLoc := Location new initialize.
	aLoc place: 'place2'.
	aLoc address: 'address2'.
	aLocation modify: aLoc.
	self assert: aLocation place = 'place2'.
	self assert: aLocation address = 'address2'!

testLocationAddress
	aLocation address: '10 Bakerstreet, London'.
	self assert: aLocation address = '10 Bakerstreet, London'!

testLocationPlace
	aLocation place: '10 Bakerstreet, London'.
	self assert: aLocation place = '10 Bakerstreet, London'!

testLocationValidate
	self should: [aLocation validate] raise: TestResult error.
	aLocation place: 'place'.
	self should: [aLocation validate] raise: TestResult error.
	aLocation address: 'address'.
	self shouldnt: [aLocation validate] raise: TestResult error!

testLocationInit
	self assert: aLocation rooms size = 0!

testLocationInitPermissions
	self 
		assert: (aLocation permissionManager permissionDictionary includesKey: 'View').
	self assert: (aLocation permissionManager permissionDictionary includesKey: 'Delete').
	self assert: (aLocation permissionManager permissionDictionary includesKey: 'Modify').
	self assert: ((aLocation permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self assert: ((aLocation permissionManager permissionDictionary at: 'View') 
				includes: 'Logged User').
	self assert: ((aLocation permissionManager permissionDictionary at: 'View') 
				includes: 'Anonymous').
	self 
		assert: ((aLocation permissionManager permissionDictionary at: 'Delete') 
				includes: 'Admin').
	self 
		assert: ((aLocation permissionManager permissionDictionary at: 'Delete') 
				includes: 'Owner').
	self 
		assert: ((aLocation permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin').
	self 
		assert: ((aLocation permissionManager permissionDictionary at: 'Modify') 
				includes: 'Owner')! !

!LocationTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Replace this comment with the appropriate initialization code *** "
	^self!

setUp
	aLocation := Location new initialize.! !


!GroupTest class methodsFor: 'instance creation'!

new
	"Answer a newly created and initialized instance."

	^super new initialize! !


!GroupTest methodsFor: 'testing'!

testGroupName
  aGroup name: 'Groupe1'.
  self assert: (aGroup name = 'Groupe1').!

testGroupInitPermissions
	self 
		assert: (aGroup permissionManager permissionDictionary includesKey: 'View').
	self assert: (aGroup permissionManager permissionDictionary 
				includesKey: 'Modify').
	self assert: ((aGroup permissionManager permissionDictionary at: 'View') 
				includes: 'Admin').
	self 
		assert: ((aGroup permissionManager permissionDictionary at: 'Modify') 
				includes: 'Admin')!

testGroupInit
  self assert: (aGroup name isNil).!

testGroupValidate
	self should: [aGroup validate] raise: TestResult error.
	aGroup name: 'Groupe1'.
	self shouldnt: [aGroup validate] raise: TestResult error.! !

!GroupTest methodsFor: 'initialize-release'!

initialize
	"Initialize a newly created instance. This method must answer the receiver."

	" *** Edit the following to properly initialize instance variables ***"
	aGroup := nil.
	" *** And replace this comment with additional initialization code *** "
	^self!

setUp
	aGroup := Group new initialize.! !



Generated by
GNU enscript 1.6.4.

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: