TreeManagerin modulitestauksessa käytettiin seuraavia testiluokkia, Test3 ja Test4 Test3.java: import java.io.*; public class Test3 { private TreeManager man; public Test3(File dtd, File doc) { man = new TreeManager(); try { man.createDTD(dtd); } catch (Exception e) { e.printStackTrace(System.out); System.exit(0); } man.printAllFirstPaths(); man.createTree(); System.out.println("An empty valid tree:"); System.out.println(man.toString()); try { man.createTree(doc); } catch (Exception e) { e.printStackTrace(System.out); System.exit(0); } System.out.println(man.toString()); } public static void main(String[] args) { Test3 test = new Test3(new File(args[0]), new File(args[1])); } } Test4.java: import java.util.*; import java.io.*; public class Test4 { private TreeManager man; private void say(String s) { System.out.println(s); } public Test4(File f) { man = new TreeManager(); try { man.createDTD(f); } catch (Exception e) { e.printStackTrace(System.out); System.exit(0); } man.printAllFirstPaths(); say("> Here's an empty valid tree:\n"); man.createTree(); say(man.toString()); say("\n> Let's get and let's build a valid .\n"); Element head = man.getHead(); Element title = man.buildValidElement("title", head); say("\n> man.canAdd(head, title) yields " + man.canAdd(head, title) + ", so let's do man.add(head, title):\n"); man.add(head, title); say("\n> Now <head> looks like this:\n\n" + head.toString()); say("\n> And man.toString() yields:\n" + man.toString()); say("\n> Let's try adding a PCData under <head>.\n" + "> man.canAdd(head, new PCData(\"Otsikko\") yields " + man.canAdd(head, new PCData("Otsikko")) + "\n"); say("Can we add a PCData under <head>? -" + man.canAdd(head, new PCData("Otsikko"))); say("Let's try adding a PCData under <title>. Success? -" + man.add(title, new PCData("Otsikko"))); say("\n> Now man.toString() yields:\n" + man.toString()); say("\n> OK. From now on, refer to the source code."); say("man.isBlock(\"body\")"+man.isBlock("body")); Block body = man.getBody(); Block bodyHead = (Block)man.buildValidElement("body.head", body); Vector tmp = new Vector(); tmp.add(bodyHead); man.add(body, 0, 0, tmp); Block hedline = (Block)man.buildValidElement("hedline", bodyHead); man.add(bodyHead, hedline); Block hl2 = (Block)man.buildValidElement("hl2", hedline); say("man.add(hedline, hl2)="+man.add(hedline, hl2)); Element location = man.buildValidElement("location", hl2); say("man.add(hl1, location): "+man.add(hl2, location)); man.add(location, new PCData("hedline-otsikko")); say(man.toString()); Vector tmp2 = new Vector(); tmp2.add(new PCData("XXXXXX")); man.replace(location, 0, 4, 0, 6, tmp2); say(man.toString()); } public static void main(String[] args) { Test4 test = new Test4(new File(args[0])); } } ******************************************************************************* Näiden testien tulokset ovat seuraavat Test3-testiluokan tulos: java Test3 jouto2.dtd koe3.xml >test3 -------- getFirstPaths --------- ul: li evloc: tobject.subject: media-caption: a: body.head: doc-id: person: media: media-reference byline: story.date: keyword: pre: head: doc.copyright: body.content: hedline: hl1 abstract: p nitf: head body tobject: tobject.subject title: key-list: location: br: li: hl2: hl1: distributor: org: body: ol: li media-reference: q: p: docdata: doc-id date.issue em: dateline: date.issue: object.title: An empty valid tree: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nitf SYSTEM "nitf.dtd"> <nitf change.time="1900" version="-//IPTC-NAA//DTD NITF-XML 2.1//EN" change.date="4 July 2000"><head /><body /></nitf> startElement:nitf characters: startElement:head characters: startElement:title characters:Kauhujuttu characters: startElement:tobject characters: startElement:tobject.subject characters: characters: startElement:docdata characters: startElement:doc-id characters: startElement:date.issue characters: startElement:doc.copyright characters: startElement:key-list characters: startElement:keyword characters: startElement:keyword characters: characters: characters: characters: startElement:body characters: startElement:body.head characters: startElement:hedline characters: startElement:hl1 characters:Kauhua teollisuuskadulla characters: startElement:hl2 characters:Roskienkerääjä iski taas characters: characters: startElement:byline characters:Petri Hellemaa characters: startElement:distributor characters:www.cs.helsinki.fi characters: startElement:dateline characters:21. maaliskuuta 2001 characters: startElement:abstract characters: startElement:p characters: Javan roskienkerääjä iski tietojenkäsittelytieteen laitoksen levypalvelimeen ja tuhosi kaikki tiedostot. characters: characters: characters: startElement:body.content characters: startElement:p characters: Javan roskienkerääjä iski tietojenkäsittelytieteen laitoksen levypalvelimeen ja tuhosi kaikki tiedostot. characters: startElement:media characters: startElement:media-reference characters: http://www.cs.helsinki.fi/group/jouto/kuva.gif characters: startElement:media-caption characters: Roskienkerääjä yllätettiin itse teossa. characters: characters: startElement:ul characters: startElement:li characters:ensimmäinen asia characters: startElement:li characters:toinen asia characters: characters: startElement:ol characters: startElement:li characters:ensimmäinen numeroitu asia characters: startElement:li characters:toinen numeroitu asia characters: characters: startElement:pre characters:Tässä on pari riviä esimuotoiltua t e k s t i ä characters: characters: characters: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nitf SYSTEM "nitf.dtd"> <nitf change.time="1900" baselang="fi-FI" version="-//IPTC-NAA//DTD NITF-XML 2.1//EN" change.date="4 July 2000"><head><title>KauhujuttuKauhua teollisuuskadullaRoskienkerääjä iski taasPetri Hellemaawww.cs.helsinki.fi21. maaliskuuta 2001

Javan roskienkerääjä iski tietojenkäsittelytieteen laitoksen levypalvelimeen ja tuhosi kaikki tiedostot.

Javan roskienkerääjä iski tietojenkäsittelytieteen laitoksen levypalvelimeen ja tuhosi kaikki tiedostot.

http://www.cs.helsinki.fi/group/jouto/kuva.gifRoskienkerääjä yllätettiin itse teossa.
  1. ensimmäinen numeroitu asia
  2. toinen numeroitu asia
Tässä on pari riviä
esimuotoiltua
t
e
k
s
t
i
ä
********************************************************************************************* Test4-luokan testauksen tulos: java Test4 simple.dtd >test4 -------- getFirstPaths --------- body.head: head: body.content: hedline: hl1 nitf: head body title: location: hl2: hl1: body: body.content p: > Here's an empty valid tree: > Let's get and let's build a valid . strArr[0] == title > man.canAdd(head, title) yields true, so let's do man.add(head, title): strArr[0] == title > Now <head> looks like this: <head><title /></head> > And man.toString() yields: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nitf SYSTEM "nitf.dtd"> <nitf change.time="1900" version="-//IPTC-NAA//DTD NITF-XML 2.1//EN" change.date="4 July 2000"><head><title /></head><body><body.content /></body></nitf> strArr[0] == title strArr[1] == #PCDATA > Let's try adding a PCData under <head>. > man.canAdd(head, new PCData("Otsikko") yields false strArr[0] == title strArr[1] == #PCDATA Can we add a PCData under <head>? -false strArr[0] == #PCDATA Let's try adding a PCData under <title>. Success? -true > Now man.toString() yields: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nitf SYSTEM "nitf.dtd"> <nitf change.time="1900" version="-//IPTC-NAA//DTD NITF-XML 2.1//EN" change.date="4 July 2000"><head><title>Otsikko > OK. From now on, refer to the source code. man.isBlock("body")true strArr[0] == body.head strArr[1] == body.content strArr[0] == hedline strArr[0] == hl1 strArr[1] == hl2 man.add(hedline, hl2)=true strArr[0] == location man.add(hl1, location): true strArr[0] == #PCDATA Otsikkohedline-otsikko strArr[0] == #PCDATA strArr[1] == #PCDATA Otsikkohedline-otsikko TreeManager-luokan havaittiin suoriutuvat puun luonti ja elementtien siirto-toimista oikealla tavalla, ja testi hyäksyttiin sellaisenaan.