Hi folks,
I am writing SUnit tests for my PEG grammar and I am not fluent in Streams.
I have my first test that checks the structure of an HTML UnorderedList. The output of the parse run is an XMLElement.
*testListUnordered <timeout: 10> | xmlElement actor ios|
actor := PEGWikiMediaGeneratorTables new. actor transcripton: false. xmlElement := parser parse: 'UnorderedList' stream: (self listUnordered) reading actor: actor. ios := ReadWriteStream on:''. xmlElement printOn: ios. self assert: ((ios contents) = '<ul><li> one</li><ul><li> two</li><ul><li> three</li><ul><li> four</li><li> four</li><ul><li> five</li><li> five</li><li> five</li></ul><li> four</li><li> four</li></ul><li> three</li><li> three</li></ul><li> two</li></ul></ul>') . *
Is there a simpler way, minus the Stream to get the "contents" of the XMLElement?
thanks in advance.
-- Sent from: http://forum.world.st/Squeak-Beginners-f107673.html
Not actually sure what your problem is, but are you aware of String class >> #streamContents:? :-)
io := String streamContents: [:ios |
xmlElement printOn: ios].
Provided that XMLElement follows the usual conventions, you should also be able to simply say
io := xmlElement printString.
Hope that helps :-)
Best, Christoph
________________________________ Von: Beginners beginners-bounces@lists.squeakfoundation.org im Auftrag von tty gettimothy@zoho.com Gesendet: Mittwoch, 8. April 2020 17:01 Uhr An: beginners@lists.squeakfoundation.org Betreff: [Newbies] Elegant way to tests an XMLElement's "string"`
Hi folks,
I am writing SUnit tests for my PEG grammar and I am not fluent in Streams.
I have my first test that checks the structure of an HTML UnorderedList. The output of the parse run is an XMLElement.
*testListUnordered
<timeout: 10> | xmlElement actor ios|
actor := PEGWikiMediaGeneratorTables new. actor transcripton: false. xmlElement := parser parse: 'UnorderedList' stream: (self listUnordered) reading actor: actor. ios := ReadWriteStream on:''. xmlElement printOn: ios. self assert: ((ios contents) = '<ul><li> one</li><ul><li> two</li><ul><li> three</li><ul><li> four</li><li> four</li><ul><li> five</li><li> five</li><li> five</li></ul><li> four</li><li> four</li></ul><li> three</li><li> three</li></ul><li> two</li></ul></ul>') . *
Is there a simpler way, minus the Stream to get the "contents" of the XMLElement?
thanks in advance.
-- Sent from: http://forum.world.st/Squeak-Beginners-f107673.html _______________________________________________ Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners
Yes, looks like #printOn: in XMLElement has everything in place for this scenario:
self assert: '<ul><li> one</li><ul><li> two</li><ul><li> three</li><ul><li> four</li><li> four</li><ul><li> five</li><li> five</li><li> five</li></ul><li> four</li><li> four</li></ul><li> three</li><li> three</li></ul><li> two</li></ul></ul> equals: xmlElement printString.
Best, Marcel Am 18.04.2020 15:10:45 schrieb Thiede, Christoph christoph.thiede@student.hpi.uni-potsdam.de: Not actually sure what your problem is, but are you aware of String class >> #streamContents:? :-)
io := String streamContents: [:ios | xmlElement printOn: ios].
Provided that XMLElement follows the usual conventions, you should also be able to simply say
io := xmlElement printString.
Hope that helps :-)
Best, Christoph
Von: Beginners beginners-bounces@lists.squeakfoundation.org im Auftrag von tty gettimothy@zoho.com Gesendet: Mittwoch, 8. April 2020 17:01 Uhr An: beginners@lists.squeakfoundation.org Betreff: [Newbies] Elegant way to tests an XMLElement's "string"` Hi folks,
I am writing SUnit tests for my PEG grammar and I am not fluent in Streams.
I have my first test that checks the structure of an HTML UnorderedList. The output of the parse run is an XMLElement.
*testListUnordered <timeout: 10> | xmlElement actor ios|
actor := PEGWikiMediaGeneratorTables new. actor transcripton: false. xmlElement := parser parse: 'UnorderedList' stream: (self listUnordered) reading actor: actor. ios := ReadWriteStream on:''. xmlElement printOn: ios. self assert: ((ios contents) = '<ul><li> one</li><ul><li> two</li><ul><li> three</li><ul><li> four</li><li> four</li><ul><li> five</li><li> five</li><li> five</li></ul><li> four</li><li> four</li></ul><li> three</li><li> three</li></ul><li> two</li></ul></ul>') . *
Is there a simpler way, minus the Stream to get the "contents" of the XMLElement?
thanks in advance.
-- Sent from: http://forum.world.st/Squeak-Beginners-f107673.html [http://forum.world.st/Squeak-Beginners-f107673.html] _______________________________________________ Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners [http://lists.squeakfoundation.org/mailman/listinfo/beginners]
Christoph and Marcel
Thank you very much. Just what I was looking for.
cheers,
t
-- Sent from: http://forum.world.st/Squeak-Beginners-f107673.html
beginners@lists.squeakfoundation.org