The Trunk: NetworkTests-pre.56.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: NetworkTests-pre.56.mcz

commits-2
Patrick Rein uploaded a new version of NetworkTests to project The Trunk:
http://source.squeak.org/trunk/NetworkTests-pre.56.mcz

==================== Summary ====================

Name: NetworkTests-pre.56
Author: pre
Time: 2 May 2019, 3:06:57.095906 pm
UUID: 8dd29edd-d8bf-3e48-a545-24d210b58774
Ancestors: NetworkTests-pre.55

Recategorizes some test methods and expected failure methods.

=============== Diff against NetworkTests-pre.55 ===============

Item was changed:
+ ----- Method: FileUrlTest>>testAsString (in category 'tests') -----
- ----- Method: FileUrlTest>>testAsString (in category 'testing') -----
  testAsString
  | target url |
  target := 'file://localhost/etc/rc.conf'.
  url := target asUrl.
  self assert: url asString = target.
  !

Item was changed:
+ ----- Method: GenericUrlTest>>testAsString (in category 'tests') -----
- ----- Method: GenericUrlTest>>testAsString (in category 'testing') -----
  testAsString
  | url |
  url := GenericUrl new schemeName: 'sip' locator: 'foo@bar'.
  self assert: url asString = 'sip:foo@bar'.!

Item was changed:
+ ----- Method: HierarchicalUrlTest>>testAsString (in category 'tests') -----
- ----- Method: HierarchicalUrlTest>>testAsString (in category 'testing') -----
  testAsString
  | url |
  url := HierarchicalUrl new
  schemeName: 'ftp'
  authority: 'localhost'
  path: #('path' 'to' 'file')
  query: 'aQuery'.
  self assert: url asString = 'ftp://localhost/path/to/file?aQuery'.!

Item was changed:
+ ----- Method: HttpUrlTest>>testHttps (in category 'tests') -----
- ----- Method: HttpUrlTest>>testHttps (in category 'as yet unclassified') -----
  testHttps
  self assert: 'https://encrypted.google.com' asUrl class == HttpUrl!

Item was changed:
+ ----- Method: MIMEDocumentTest>>testUtf8Text (in category 'tests') -----
- ----- Method: MIMEDocumentTest>>testUtf8Text (in category 'as yet unclassified') -----
  testUtf8Text
 
  | document |
  document := MIMEDocument contentType: 'text/plain; charset="utf8"' content: self utf8String.
  self assert: self utf8String utf8ToSqueak equals: document content !

Item was changed:
+ ----- Method: MIMEDocumentTest>>utf8String (in category 'fixtures') -----
- ----- Method: MIMEDocumentTest>>utf8String (in category 'as yet unclassified') -----
  utf8String
 
  ^ #[199 161 84 83 67 72] asString!

Item was changed:
+ ----- Method: MailDateAndTimeTest>>testBasicDate (in category 'tests') -----
- ----- Method: MailDateAndTimeTest>>testBasicDate (in category 'as yet unclassified') -----
  testBasicDate
 
  | date |
  date := DateAndTime year: 2017 month: 2 day: 3 hour: 0 minute: 0 second: 0 offset: (Duration hours: 0).
  self assert: 'Fri, 03 Feb 2017 00:00:00 +0000' equals: date asMailMessageString!

Item was changed:
+ ----- Method: MailDateAndTimeTest>>testBasicDateAndTime (in category 'tests') -----
- ----- Method: MailDateAndTimeTest>>testBasicDateAndTime (in category 'as yet unclassified') -----
  testBasicDateAndTime
 
  | date |
  date := DateAndTime year: 2000 month: 6 day: 22 hour: 14 minute: 17 second: 47 offset: (Duration days: 0 hours: -5 minutes: 0 seconds: 0 nanoSeconds:0).
  self assert: 'Thu, 22 Jun 2000 14:17:47 -0500' equals: date asMailMessageString
  !

Item was changed:
+ ----- Method: MailMessageTest>>testAttachmentsGetTheirOwnContentType (in category 'tests') -----
- ----- Method: MailMessageTest>>testAttachmentsGetTheirOwnContentType (in category 'testing') -----
  testAttachmentsGetTheirOwnContentType
 
  | message contentType |
  message := MailMessage empty
  addAttachmentFrom: 'abcxxx' readStream withName: 'aTestingAttachment.pdf';
  body: ((MIMEDocument contentType: 'application/foo' content: 'This is the main text' squeakToUtf8)
  charset: 'utf-8'; yourself).
 
  self assert: message attachments size equals: 1.
 
  contentType := (message attachments first fieldNamed: 'content-type' ifAbsent: [self fail])
  mainValue.
  self assert: contentType equals: 'application/pdf'.
  !

Item was changed:
+ ----- Method: MailMessageTest>>testAttachmentsReturnsTheAttachments (in category 'tests') -----
- ----- Method: MailMessageTest>>testAttachmentsReturnsTheAttachments (in category 'testing') -----
  testAttachmentsReturnsTheAttachments
 
  | fileName message |
  message := MailMessage empty
  addAttachmentFrom: 'abcxxx' readStream withName: 'aTestingAttachment';
  body: ((MIMEDocument contentType: 'application/foo' content: 'This is the main text' squeakToUtf8)
  charset: 'utf-8'; yourself).
 
  self assert: 1 equals: message attachments size.
 
  fileName := (message attachments first fieldNamed: 'content-disposition' ifAbsent: [self fail])
  parameterAt: 'filename' ifAbsent: [''].
 
  self assert: fileName equals: '"aTestingAttachment"'.
 
  fileName := (message attachments first fieldNamed: 'content-type' ifAbsent: [self fail])
  parameterAt: 'name' ifAbsent: [''].
 
  self assert: fileName equals: '"aTestingAttachment"'.!

Item was changed:
+ ----- Method: MailMessageTest>>testAttachmentsWorkWithVeryLongFilenames (in category 'tests') -----
- ----- Method: MailMessageTest>>testAttachmentsWorkWithVeryLongFilenames (in category 'testing') -----
  testAttachmentsWorkWithVeryLongFilenames
 
  | fileName message |
  message := MailMessage empty
  addAttachmentFrom: 'abcxxx' readStream withName: 'aTestingAttachmentWithAVeryVeryVeryVeryVeryVeryVeryVeryLongName.file';
  body: ((MIMEDocument contentType: 'application/foo' content: 'This is the main text' squeakToUtf8)
  charset: 'utf-8'; yourself).
 
  self assert: message attachments size equals: 1.
 
  fileName := (message attachments first fieldNamed: 'content-disposition' ifAbsent: [self fail])
  parameterAt: 'filename' ifAbsent: [''].
 
  self assert: '"aTestingAttachmentWithAVeryVeryVeryVeryVeryVeryVeryVeryLongName.file"' equals: fileName
  !

Item was changed:
+ ----- Method: MailMessageTest>>testCreateAReplyForFrom (in category 'tests') -----
- ----- Method: MailMessageTest>>testCreateAReplyForFrom (in category 'testing') -----
  testCreateAReplyForFrom
 
  | replyMail |
  replyMail := MailMessage replyFor: self fixtureMail.
  self assert: self fixtureSenderMail equals: replyMail to.!

Item was changed:
+ ----- Method: MailMessageTest>>testCreateAReplyForReplyTo (in category 'tests') -----
- ----- Method: MailMessageTest>>testCreateAReplyForReplyTo (in category 'testing') -----
  testCreateAReplyForReplyTo
 
  | replyMail startMail |
  startMail := self fixtureMail
  setField: 'reply-to' toString: '[hidden email]';
  yourself.
  replyMail := MailMessage replyFor: startMail.
  self assert: '[hidden email]' equals: replyMail to.!

Item was changed:
+ ----- Method: MailMessageTest>>testCreateAReplyForReplyTos (in category 'tests') -----
- ----- Method: MailMessageTest>>testCreateAReplyForReplyTos (in category 'testing') -----
  testCreateAReplyForReplyTos
 
  | replyMail startMail |
  startMail := self fixtureMail
  setField: 'reply-to' toString: '[hidden email], [hidden email]';
  yourself.
  replyMail := MailMessage replyFor: startMail.
  self
  assert: {'[hidden email]' . '[hidden email]'} asSet
  equals: ((replyMail to findTokens: ',') collect: [:e | e withBlanksTrimmed]) asSet.!

Item was changed:
+ ----- Method: MailMessageTest>>testCreateAReplyHasANewSubject (in category 'tests') -----
- ----- Method: MailMessageTest>>testCreateAReplyHasANewSubject (in category 'testing') -----
  testCreateAReplyHasANewSubject
 
  | replyMail |
  replyMail := MailMessage replyFor: self fixtureMail.
  self assert: 'Re: ' , self fixtureSubject equals: replyMail subject.!

Item was changed:
+ ----- Method: MailMessageTest>>testCreateMailMessage (in category 'tests') -----
- ----- Method: MailMessageTest>>testCreateMailMessage (in category 'testing') -----
  testCreateMailMessage
 
  | newMail |
  newMail := MailMessage from: 'From: Al Gore <[hidden email]>
  To: White House Transportation Coordinator <[hidden email]>
  Subject: [Map of a country]
 
  there is a country map in this mail somewhere'.
  self assert: '[Map of a country]' equals: newMail subject!

Item was changed:
+ ----- Method: MailMessageTest>>testDateAndDateString (in category 'tests') -----
- ----- Method: MailMessageTest>>testDateAndDateString (in category 'testing') -----
  testDateAndDateString
 
  | newMail |
  newMail := MailMessage from: 'From: Al Gore <[hidden email]>
  To: White House Transportation Coordinator <[hidden email]>
  Subject: [Map of a country]
  Date: Mon, 12 Aug 2002 17:42:00 +0000
 
  there is a country map in this mail somewhere'.
 
  self assert: (DateAndTime year: 2002 month: 8 day: 12 hour: 17 minute: 42) equals: newMail date.
  self assert: '8/12/02' equals: newMail dateString.!

Item was changed:
+ ----- Method: MailMessageTest>>testDateStampFractionalSecondFormatting (in category 'tests') -----
- ----- Method: MailMessageTest>>testDateStampFractionalSecondFormatting (in category 'testing') -----
  testDateStampFractionalSecondFormatting
  self assert: (MailMessage dateStamp: (DateAndTime fromSeconds: 1.234))
  = 'Tue, 1 Jan 1901 00:00:01'
  description: 'RFC822 (and RFC2822) forbids non-integer seconds in dates'!

Item was changed:
+ ----- Method: MailMessageTest>>testReplyContainsInReplyTo (in category 'tests') -----
- ----- Method: MailMessageTest>>testReplyContainsInReplyTo (in category 'testing') -----
  testReplyContainsInReplyTo
 
  | replyMail |
  replyMail := MailMessage replyFor: self fixtureMail.
  self assert: self fixtureMessageId equals: (replyMail fieldNamed: 'in-reply-to' ifAbsent: [self fail]) mainValue.!

Item was changed:
+ ----- Method: MailMessageTest>>testReplyContainsReferences (in category 'tests') -----
- ----- Method: MailMessageTest>>testReplyContainsReferences (in category 'testing') -----
  testReplyContainsReferences
 
  | replyMail lastReply |
  replyMail := MailMessage replyFor: self fixtureMail.
  replyMail
  setField: 'message-id' toString: 'abc';
  from: '[hidden email]'.
  lastReply := MailMessage replyFor: replyMail.
 
  self
  assert: self fixtureMessageId , ', abc'
  equals: (lastReply fieldNamed: 'references' ifAbsent: [self fail]) mainValue.!

Item was changed:
+ ----- Method: MailMessageTest>>testSendableVersionHasCorrectLineBreaks (in category 'tests') -----
- ----- Method: MailMessageTest>>testSendableVersionHasCorrectLineBreaks (in category 'testing') -----
  testSendableVersionHasCorrectLineBreaks
 
  | newMail longContent |
  "To create a string which is too long to very old recommendations
  of the mail message format, which is about 70 characters."
  longContent := ((1 to: 80) do: [:i | i asString]) joinSeparatedBy: ''.
  newMail := self fixtureMail.
  newMail body: ((MIMEDocument
  contentType: MIMEDocument contentTypePlainText
  content: longContent)
  charset: 'UTF-8';
  yourself).
  newMail := MailMessage from: newMail asSendableText.
  self assert: (newMail bodyTextFormatted asString includesSubstring: longContent)!

Item was changed:
+ ----- Method: SMTPClientTest>>testMailFrom (in category 'tests') -----
- ----- Method: SMTPClientTest>>testMailFrom (in category 'testing') -----
  testMailFrom
  smtp mailFrom: '[hidden email]'.
  self assert: socket outStream contents = ('MAIL FROM: <[hidden email]>', String crlf).
 
  socket resetOutStream.
  smtp mailFrom: '<[hidden email]>'.
  self assert: socket outStream contents = ('MAIL FROM: <[hidden email]>', String crlf).
 
  socket resetOutStream.
  smtp mailFrom: 'Frank <[hidden email]>'.
  self assert: socket outStream contents = ('MAIL FROM: <[hidden email]>', String crlf).!

Item was changed:
+ ----- Method: SocketStreamTest>>setUp (in category 'running') -----
- ----- Method: SocketStreamTest>>setUp (in category 'setup') -----
  setUp
  | listener clientSocket serverSocket |
  listener := Socket newTCP.
  [listener listenOn: 0 backlogSize: 4.
 
  clientSocket := Socket newTCP.
  clientSocket connectTo: #[127 0 0 1] port: listener localPort.
  clientSocket waitForConnectionFor: 1.
  self assert: clientSocket isConnected.
 
  serverSocket := listener waitForAcceptFor: 1.
  self assert: serverSocket isConnected.
  ] ensure:[listener destroy].
 
  clientStream := SocketStream on: clientSocket.
  serverStream := SocketStream on: serverSocket.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>tearDown (in category 'running') -----
- ----- Method: SocketStreamTest>>tearDown (in category 'setup') -----
  tearDown
  clientStream ifNotNil:[clientStream destroy].
  serverStream ifNotNil:[serverStream destroy].!

Item was changed:
+ ----- Method: SocketStreamTest>>testNextIntoClose (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testNextIntoClose (in category 'stream protocol') -----
  testNextIntoClose
  "Ensure that #next:into: will function properly when the connection is closed"
 
  clientStream nextPutAll:'A line of text'; flush.
  [(Delay forMilliseconds: 100) wait.
  clientStream close] fork.
  self assert: (serverStream next: 100 into: (String new: 100) startingAt: 1)
  equals: 'A line of text'.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testNextIntoCloseNonSignaling (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testNextIntoCloseNonSignaling (in category 'stream protocol') -----
  testNextIntoCloseNonSignaling
  "Ensure that #next:into: will function properly when the connection is closed"
 
  serverStream shouldSignal: false.
  clientStream nextPutAll:'A line of text'; flush.
  [(Delay forMilliseconds: 100) wait.
  clientStream close] fork.
  self assert: (serverStream next: 100 into: (String new: 100) startingAt: 1)
  equals: 'A line of text'.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpTo (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpTo (in category 'stream protocol') -----
  testUpTo
  "Tests correct behavior of #upTo:"
 
  clientStream nextPutAll:'A line of text', String cr, 'with more text'; flush.
  self assert: (serverStream upTo: Character cr) = 'A line of text'.
  [(Delay forSeconds: 1) wait.
  clientStream nextPutAll: String cr; flush] fork.
  self assert: (serverStream upTo: Character cr) = 'with more text'.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAfterCloseNonSignaling (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAfterCloseNonSignaling (in category 'stream protocol') -----
  testUpToAfterCloseNonSignaling
  "Tests correct behavior of #upToAll"
 
  | resp |
  clientStream nextPutAll: 'A line of text'.
  clientStream close.
  serverStream shouldSignal: false.
  self shouldnt: [resp := serverStream upTo: Character cr] raise: ConnectionClosed.
  self assert: resp = 'A line of text'.!

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAfterCloseSignaling (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAfterCloseSignaling (in category 'stream protocol') -----
  testUpToAfterCloseSignaling
  "Tests correct behavior of #upToAll"
 
  clientStream nextPutAll:'A line of text'.
  clientStream close.
  self should: [serverStream upTo: Character cr] raise: ConnectionClosed.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAll (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAll (in category 'stream protocol') -----
  testUpToAll
  "Tests correct behavior of #upToAll"
 
  clientStream nextPutAll:'A line of text', String crlf, 'with more text'; flush.
  self assert: (serverStream upToAll: String crlf) = 'A line of text'.
  [(Delay forSeconds: 1) wait.
  clientStream nextPutAll: String crlf; flush] fork.
  self assert: (serverStream upToAll: String crlf) = 'with more text'.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllAfterCloseNonSignaling (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllAfterCloseNonSignaling (in category 'stream protocol') -----
  testUpToAllAfterCloseNonSignaling
  "Tests correct behavior of #upToAll"
 
  | resp |
  clientStream nextPutAll: 'A line of text'.
  clientStream close.
  serverStream shouldSignal: false.
  self shouldnt: [resp := serverStream upToAll: String crlf] raise: ConnectionClosed.
  self assert: resp = 'A line of text'.!

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllAfterCloseSignaling (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllAfterCloseSignaling (in category 'stream protocol') -----
  testUpToAllAfterCloseSignaling
  "Tests correct behavior of #upToAll"
 
  clientStream nextPutAll:'A line of text'.
  clientStream close.
  self should: [serverStream upToAll: String crlf] raise: ConnectionClosed.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllAsciiVsBinary (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllAsciiVsBinary (in category 'stream protocol') -----
  testUpToAllAsciiVsBinary
  "Tests correct behavior of #upToAll"
 
  serverStream ascii.
  clientStream nextPutAll:'A line of text', String crlf, 'with more text'; flush.
  self assert: (serverStream upToAll: #[13 10]) = 'A line of text'.
 
  serverStream binary.
  clientStream nextPutAll: String crlf; flush.
  self assert: (serverStream upToAll: String crlf) asString = 'with more text'.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllCrlfAscii (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllCrlfAscii (in category 'stream protocol') -----
  testUpToAllCrlfAscii
  "Tests correct behavior of #upToAll with a two-byte delimiter in ascii mode"
  self testUpToAllDelimiter: String crlf
  input: 'A header', String crlf, 'and a body'
  expected: {'A header'. 'and a body'}
  binary: false.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllCrlfBinary (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllCrlfBinary (in category 'stream protocol') -----
  testUpToAllCrlfBinary
  "Tests correct behavior of #upToAll with a two-byte delimiter in binary mode"
  self testUpToAllDelimiter: String crlf
  input: 'A header', String crlf, 'and a body'
  expected: {'A header'. 'and a body'}
  binary: true.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllCrlfCrlfAscii (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllCrlfCrlfAscii (in category 'stream protocol') -----
  testUpToAllCrlfCrlfAscii
  "Tests correct behavior of #upToAll with a four-byte delimiter in ascii mode"
  self testUpToAllDelimiter: String crlfcrlf
  input: 'A header', String crlfcrlf, 'and a body'
  expected: {'A header'. 'and a body'}
  binary: false.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllCrlfCrlfBinary (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllCrlfCrlfBinary (in category 'stream protocol') -----
  testUpToAllCrlfCrlfBinary
  "Tests correct behavior of #upToAll with a four-byte delimiter in binary mode"
  self testUpToAllDelimiter: String crlfcrlf
  input: 'A header', String crlfcrlf, 'and a body'
  expected: {'A header'. 'and a body'}
  binary: true.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllDelimiter:input:expected:binary: (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllDelimiter:input:expected:binary: (in category 'stream protocol') -----
  testUpToAllDelimiter: delimiter input: input expected: aCollection binary: useBinary
  "General test of #upToAll."
  clientStream nextPutAll: input; close.
  serverStream shouldSignal: false.
  useBinary ifTrue: [serverStream binary] ifFalse: [serverStream ascii].
  aCollection do: [:expected | | actual |
  actual := (serverStream upToAll: delimiter) asString.
  self assert: actual = expected].
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllEmptyPatternAscii (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllEmptyPatternAscii (in category 'stream protocol') -----
  testUpToAllEmptyPatternAscii
  "Tests correct behavior of #upToAll with an empty delimiter string, in ascii mode"
  self testUpToAllDelimiter: ''
  input: 'xaxbxc'
  expected: {'xaxbxc'}
  binary: false.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllEmptyPatternBinary (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllEmptyPatternBinary (in category 'stream protocol') -----
  testUpToAllEmptyPatternBinary
  "Tests correct behavior of #upToAll with an empty delimiter string, in binary mode"
  self testUpToAllDelimiter: ''
  input: 'xaxbxc'
  expected: {'xaxbxc'}
  binary: true.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllLimit (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllLimit (in category 'stream protocol') -----
  testUpToAllLimit
  "Tests correct behavior of #upToAll:limit:"
 
  clientStream nextPutAll:'A line of text'; flush.
  self assert: (serverStream upToAll: String crlf limit: 5) = 'A line of text'.!

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllLongPatternAscii (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllLongPatternAscii (in category 'stream protocol') -----
  testUpToAllLongPatternAscii
  "Tests correct behavior of #upToAll with a long delimiter string, in ascii mode"
  self testUpToAllDelimiter: 'xxxxx'
  input: 'xxxxxaxxxxbxxxxxc'
  expected: {''. 'axxxxb'. 'c'}
  binary: false.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllLongPatternBinary (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllLongPatternBinary (in category 'stream protocol') -----
  testUpToAllLongPatternBinary
  "Tests correct behavior of #upToAll with a long delimiter string, in binary mode"
  self testUpToAllDelimiter: 'xxxxx'
  input: 'xxxxxaxxxxbxxxxxc'
  expected: {''. 'axxxxb'. 'c'}
  binary: true.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllMediumPatternAscii (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllMediumPatternAscii (in category 'stream protocol') -----
  testUpToAllMediumPatternAscii
  "Tests correct behavior of #upToAll with a two-character delimiter string, in ascii mode"
  self testUpToAllDelimiter: 'xx'
  input: 'xxaxbxxc'
  expected: {''. 'axb'. 'c'}
  binary: false.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllMediumPatternBinary (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllMediumPatternBinary (in category 'stream protocol') -----
  testUpToAllMediumPatternBinary
  "Tests correct behavior of #upToAll with a two-character delimiter string, in binary mode"
  self testUpToAllDelimiter: 'xx'
  input: 'xxaxbxxc'
  expected: {''. 'axb'. 'c'}
  binary: true.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllShortPatternAscii (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllShortPatternAscii (in category 'stream protocol') -----
  testUpToAllShortPatternAscii
  "Tests correct behavior of #upToAll with a short delimiter string, in ascii mode"
  self testUpToAllDelimiter: 'x'
  input: 'xaxbxc'
  expected: {''. 'a'. 'b'. 'c'}
  binary: false.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllShortPatternAscii2 (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllShortPatternAscii2 (in category 'stream protocol') -----
  testUpToAllShortPatternAscii2
  "Tests correct behavior of #upToAll with a short delimiter string, in ascii mode"
  self testUpToAllDelimiter: 'x'
  input: 'axbxcx'
  expected: {'a'. 'b'. 'c'. ''}
  binary: false.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllShortPatternBinary (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllShortPatternBinary (in category 'stream protocol') -----
  testUpToAllShortPatternBinary
  "Tests correct behavior of #upToAll with a short delimiter string, in binary mode"
  self testUpToAllDelimiter: 'x'
  input: 'xaxbxc'
  expected: {''. 'a'. 'b'. 'c'}
  binary: true.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllShortPatternBinary2 (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllShortPatternBinary2 (in category 'stream protocol') -----
  testUpToAllShortPatternBinary2
  "Tests correct behavior of #upToAll with a short delimiter string, in binary mode"
  self testUpToAllDelimiter: 'x'
  input: 'axbxcx'
  expected: {'a'. 'b'. 'c'. ''}
  binary: true.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAllTimeout (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAllTimeout (in category 'stream protocol') -----
  testUpToAllTimeout
  "Tests correct behavior of #upToAll"
 
  clientStream nextPutAll: 'A line of text'.
  serverStream timeout: 1.
  self should: [serverStream upToAll: String crlf] raise: ConnectionTimedOut.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToAsciiVsBinary (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToAsciiVsBinary (in category 'stream protocol') -----
  testUpToAsciiVsBinary
  "Tests correct behavior of #upTo:"
 
  serverStream ascii.
  clientStream nextPutAll:'A line of text', String cr, 'with more text'; flush.
  self assert: (serverStream upTo: 13) = 'A line of text'.
 
  serverStream binary.
  clientStream nextPutAll: String cr; flush.
  self assert: (serverStream upTo: Character cr) asString = 'with more text'.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToEndClose (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToEndClose (in category 'stream protocol') -----
  testUpToEndClose
  "Ensure that #upToEnd will function properly when the connection is closed"
 
  clientStream nextPutAll:'A line of text'; flush.
  [(Delay forMilliseconds: 100) wait.
  clientStream close] fork.
  self assert: (serverStream upToEnd)
  equals: 'A line of text'.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToEndCloseNonSignaling (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToEndCloseNonSignaling (in category 'stream protocol') -----
  testUpToEndCloseNonSignaling
  "Ensure that #upToEnd will function properly when the connection is closed"
 
  serverStream shouldSignal: false.
  clientStream nextPutAll:'A line of text'; flush.
  [(Delay forMilliseconds: 100) wait.
  clientStream close] fork.
  self assert: (serverStream upToEnd)
  equals: 'A line of text'.
  !

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToMax (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToMax (in category 'stream protocol') -----
  testUpToMax
  "Tests correct behavior of #upToAll:max:"
 
  clientStream nextPutAll:'A line of text'; flush.
  self assert: (serverStream upTo: Character cr limit: 5) = 'A line of text'.!

Item was changed:
+ ----- Method: SocketStreamTest>>testUpToTimeout (in category 'tests - stream protocol') -----
- ----- Method: SocketStreamTest>>testUpToTimeout (in category 'stream protocol') -----
  testUpToTimeout
  "Tests correct behavior of #upToAll"
 
  clientStream nextPutAll: 'A line of text'.
  serverStream timeout: 1.
  self should: [serverStream upTo: Character cr] raise: ConnectionTimedOut.
  !

Item was changed:
+ ----- Method: SocketTest>>expectedFailures (in category 'failures') -----
- ----- Method: SocketTest>>expectedFailures (in category 'setup') -----
  expectedFailures
 
  ^ Smalltalk platformName = 'Win32'
  ifTrue: [#(testSocketReuse)]
  ifFalse: [#()]!

Item was changed:
+ ----- Method: SocketTest>>listenerAddress (in category 'fixtures') -----
- ----- Method: SocketTest>>listenerAddress (in category 'setup') -----
  listenerAddress
  ^NetNameResolver addressForName: 'localhost'
  !

Item was changed:
+ ----- Method: SocketTest>>listenerPort (in category 'fixtures') -----
- ----- Method: SocketTest>>listenerPort (in category 'setup') -----
  listenerPort
  ^42324
  !

Item was changed:
+ ----- Method: SocketTest>>setUp (in category 'running') -----
- ----- Method: SocketTest>>setUp (in category 'setup') -----
  setUp
 
  listenerSocket := Socket newTCP listenOn: self listenerPort backlogSize: 4 interface: self listenerAddress.
  !

Item was changed:
+ ----- Method: SocketTest>>tearDown (in category 'running') -----
- ----- Method: SocketTest>>tearDown (in category 'setup') -----
  tearDown
 
  listenerSocket ifNotNil:[listenerSocket destroy].
  clientSocket ifNotNil:[clientSocket destroy].
  serverSocket ifNotNil:[serverSocket destroy].
  !

Item was changed:
+ ----- Method: TestURI>>testDefaultDirRoundtrip (in category 'tests - file') -----
- ----- Method: TestURI>>testDefaultDirRoundtrip (in category 'running file') -----
  testDefaultDirRoundtrip
  | defaultDir defaultURI uriDir |
  defaultDir := FileDirectory default.
  defaultURI := defaultDir uri.
  uriDir := FileDirectory uri: defaultURI.
  self should: [defaultDir fullName = uriDir fullName]!

Item was changed:
+ ----- Method: TestURI>>testDirWithHash (in category 'tests - file') -----
- ----- Method: TestURI>>testDirWithHash (in category 'running file') -----
  testDirWithHash
  "Tests proper escaping of directories with hash mark"
 
  | uriDir origPath origDir dirURI |
  origPath := FileDirectory default pathName, '#123'.
  origDir := FileDirectory on: origPath.
  self assert: origDir pathName = origPath.
 
  dirURI := origDir uri.
  uriDir := FileDirectory uri: dirURI.
  self assert: origDir fullName = uriDir fullName.!

Item was changed:
+ ----- Method: TestURI>>testDirectoryRoot (in category 'tests - file') -----
- ----- Method: TestURI>>testDirectoryRoot (in category 'running file') -----
  testDirectoryRoot
 
  | rootDir uriRoot uriDir |
  rootDir := FileDirectory root.
  uriRoot := 'file:///' asURI.
  uriDir := FileDirectory uri: uriRoot.
  self should: [rootDir fullName = uriDir fullName]!

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal1 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal1 (in category 'running resolving') -----
  testResolveAbnormal1
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '../../../g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/../g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal10 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal10 (in category 'running resolving') -----
  testResolveAbnormal10
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := './g/.'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g/'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal11 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal11 (in category 'running resolving') -----
  testResolveAbnormal11
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g/./h'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g/h'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal12 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal12 (in category 'running resolving') -----
  testResolveAbnormal12
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g/../h'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/h'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal13 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal13 (in category 'running resolving') -----
  testResolveAbnormal13
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g;x=1/./y'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g;x=1/y'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal14 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal14 (in category 'running resolving') -----
  testResolveAbnormal14
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g;x=1/../y'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/y'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal15 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal15 (in category 'running resolving') -----
  testResolveAbnormal15
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g?y/./x'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g?y/./x'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal16 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal16 (in category 'running resolving') -----
  testResolveAbnormal16
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g?y/../x'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g?y/../x'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal17 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal17 (in category 'running resolving') -----
  testResolveAbnormal17
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g#s/./x'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g#s/./x'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal18 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal18 (in category 'running resolving') -----
  testResolveAbnormal18
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g#s/../x'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g#s/../x'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal2 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal2 (in category 'running resolving') -----
  testResolveAbnormal2
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '../../../../g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/../../g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal3 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal3 (in category 'running resolving') -----
  testResolveAbnormal3
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '/./g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/./g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal4 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal4 (in category 'running resolving') -----
  testResolveAbnormal4
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '/../g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/../g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal5 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal5 (in category 'running resolving') -----
  testResolveAbnormal5
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g.'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g.'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal6 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal6 (in category 'running resolving') -----
  testResolveAbnormal6
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '.g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/.g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal7 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal7 (in category 'running resolving') -----
  testResolveAbnormal7
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g..'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g..'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal8 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal8 (in category 'running resolving') -----
  testResolveAbnormal8
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '..g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/..g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveAbnormal9 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveAbnormal9 (in category 'running resolving') -----
  testResolveAbnormal9
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := './../g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal1 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal1 (in category 'running resolving') -----
  testResolveNormal1
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g:h'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'g:h'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal10 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal10 (in category 'running resolving') -----
  testResolveNormal10
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g?y#s'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g?y#s'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal11 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal11 (in category 'running resolving') -----
  testResolveNormal11
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := ';x'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/;x'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal12 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal12 (in category 'running resolving') -----
  testResolveNormal12
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g;x'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g;x'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal13 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal13 (in category 'running resolving') -----
  testResolveNormal13
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g;x?y#s'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g;x?y#s'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal14 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal14 (in category 'running resolving') -----
  testResolveNormal14
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '.'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal15 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal15 (in category 'running resolving') -----
  testResolveNormal15
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := './'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal16 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal16 (in category 'running resolving') -----
  testResolveNormal16
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '..'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal17 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal17 (in category 'running resolving') -----
  testResolveNormal17
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '../'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal18 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal18 (in category 'running resolving') -----
  testResolveNormal18
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '../g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal19 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal19 (in category 'running resolving') -----
  testResolveNormal19
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '../..'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal2 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal2 (in category 'running resolving') -----
  testResolveNormal2
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal20 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal20 (in category 'running resolving') -----
  testResolveNormal20
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '../../'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal21 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal21 (in category 'running resolving') -----
  testResolveNormal21
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '../../g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal3 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal3 (in category 'running resolving') -----
  testResolveNormal3
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := './g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal4 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal4 (in category 'running resolving') -----
  testResolveNormal4
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g/'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g/'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal5 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal5 (in category 'running resolving') -----
  testResolveNormal5
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '/g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal6 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal6 (in category 'running resolving') -----
  testResolveNormal6
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '//g'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://g'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal7 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal7 (in category 'running resolving') -----
  testResolveNormal7
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := '?y'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/?y'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal8 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal8 (in category 'running resolving') -----
  testResolveNormal8
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g?y'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g?y'].
  !

Item was changed:
+ ----- Method: TestURI>>testResolveNormal9 (in category 'tests - resolving') -----
- ----- Method: TestURI>>testResolveNormal9 (in category 'running resolving') -----
  testResolveNormal9
  | baseURI relURI resolvedURI |
  baseURI := 'http://a/b/c/d;p?q' asURI.
  relURI := 'g#s'.
  resolvedURI := baseURI resolveRelativeURI: relURI.
  self should: [resolvedURI asString = 'http://a/b/c/g#s'].
  !

Item was changed:
+ ----- Method: TestURI>>testSchemeAbsoluteFail1 (in category 'tests - parsing') -----
- ----- Method: TestURI>>testSchemeAbsoluteFail1 (in category 'running parsing') -----
  testSchemeAbsoluteFail1
  self should: [URI fromString: 'http:'] raise: IllegalURIException!

Item was changed:
+ ----- Method: TestURI>>testSchemeAbsolutePass1 (in category 'tests - parsing') -----
- ----- Method: TestURI>>testSchemeAbsolutePass1 (in category 'running parsing') -----
  testSchemeAbsolutePass1
  | uri |
  uri := URI fromString: 'http://www.squeakland.org'.
  self should: [uri scheme = 'http'].
  self should: [uri isAbsolute].
  self shouldnt: [uri isOpaque].
  self shouldnt: [uri isRelative]!

Item was changed:
+ ----- Method: TestURI>>testSchemeAbsolutePass2 (in category 'tests - parsing') -----
- ----- Method: TestURI>>testSchemeAbsolutePass2 (in category 'running parsing') -----
  testSchemeAbsolutePass2
  | uri |
  uri := URI fromString: 'mailto:[hidden email]'.
  self should: [uri scheme = 'mailto'].
  self should: [uri isAbsolute].
  self should: [uri isOpaque].
  self shouldnt: [uri isRelative]!

Item was changed:
+ ----- Method: TestURI>>testSchemeAbsolutePass3 (in category 'tests - parsing') -----
- ----- Method: TestURI>>testSchemeAbsolutePass3 (in category 'running parsing') -----
  testSchemeAbsolutePass3
  | uri |
  uri := URI fromString: 'ftp://[hidden email]'.
  self should: [uri scheme = 'ftp'].
  self should: [uri isAbsolute].
  self shouldnt: [uri isOpaque].
  self shouldnt: [uri isRelative].
  self should: [uri userInfo = 'ftp'].
  self should: [uri host = 'squeak.org'].
  self should: [uri port isNil].
  !

Item was changed:
+ ----- Method: TestURI>>testSchemeAbsolutePass4 (in category 'tests - parsing') -----
- ----- Method: TestURI>>testSchemeAbsolutePass4 (in category 'running parsing') -----
  testSchemeAbsolutePass4
  | uri |
  uri := URI fromString: 'mailto:[hidden email]#fragment'.
  self should: [uri scheme = 'mailto'].
  self should: [uri isAbsolute].
  self should: [uri isOpaque].
  self shouldnt: [uri isRelative].
  self should: [uri fragment = 'fragment'].
  !

Item was changed:
+ ----- Method: TestURI>>testSchemeAbsolutePass5 (in category 'tests - parsing') -----
- ----- Method: TestURI>>testSchemeAbsolutePass5 (in category 'running parsing') -----
  testSchemeAbsolutePass5
  | uri |
  uri := URI fromString: 'http://www.squeakland.org#fragment'.
  self should: [uri scheme = 'http'].
  self should: [uri isAbsolute].
  self shouldnt: [uri isOpaque].
  self shouldnt: [uri isRelative].
  self should: [uri fragment = 'fragment'].
  !

Item was changed:
+ ----- Method: UUIDTest>>testComparison (in category 'tests') -----
- ----- Method: UUIDTest>>testComparison (in category 'as yet unclassified') -----
  testComparison
  "Test if the comparison operators define a total sort function."
 
  #(
  #[3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0] #[2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
  #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1] #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4]
  #[2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0] #[3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
  #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4] #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1]
  #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4] #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4]
  ) pairsDo: [ :x :y |
  | a b c d |
  a := UUID newFrom: x.
  b := UUID newFrom: y.
  c := x asString.
  d := y asString.
  "Check if the comparison is lexicographical, just like strings'."
  #(< > <= >= = ~=) do: [ :operation |
  self assert: (a perform: operation with: b) = (c perform: operation with: d) ].
  "And a few more"
  self
  assert: (a < b) = (a >= b) not;
  assert: (a > b) = (a <= b) not;
  assert: (a = b) = (a ~= b) not;
  assert: (a < b) = (b > a);
  assert: (a > b) = (b < a);
  assert: (a >= b) = (b <= a);
  assert: (a <= b) = (b >= a);
  assert: (a = b) = (b = a);
  assert: (a ~= b) = (b ~= a);
  assert: (a > b) = ((a >= b) & (a ~= b));
  assert: (a < b) = ((a <= b) & (a ~= b));
  assert: (a >= b) = ((a = b) | (a > b));
  assert: (a <= b) = ((a = b) | (a < b));
  assert: (a ~= b) = ((a < b) | (a > b));
  assert: (a <= b) & (b <= a) = (a = b);
  assert: (a >= b) & (b >= a) = (a = b);
  assert: (a <= b) | (b <= a);
  assert: (a = b) asBit + (a < b) asBit + (b < a) asBit = 1 ]!

Item was changed:
+ ----- Method: UrlTest>>testFromFileNameOrUrlString (in category 'tests') -----
- ----- Method: UrlTest>>testFromFileNameOrUrlString (in category 'testing') -----
  testFromFileNameOrUrlString
 
  url := Url absoluteFromFileNameOrUrlString: 'asdf'.
  self assert: url schemeName = 'file'.
  self assert: url fragment isNil.
  self assert: url class = FileUrl.
 
  url := Url absoluteFromFileNameOrUrlString: 'http://209.143.91.36/super/SuperSwikiProj/AAEmptyTest.001.pr'.
  self assert: url schemeName = 'http'.
  self assert: url fragment isNil.
  self assert: url class = HttpUrl.!