<?xml version="1.0" encoding="ISO-8859-1"?>

<aiml version="1.0">

<!-- Free software (c) 2001 ALICE AI Foundation -->
<!-- This program is open source code released under -->
<!-- the terms of the GNU General Public License -->
<!-- as published by the Free Software Foundation. -->

<!-- author: Thomas Ringate -->

<!-- 
This file contains test cases to verify the correct operations of the Alicebot
It should be placed in the directory where all the standard bot AIML files are
located.  It expects to find and use some of the standard categories
found in the core AIML set.
Each test case is documented with what is expected to be the correct response.
-->

<!-- Test case #01.

This testcase tests the ability to output a simple atomic statement from the bot.

TESTER) testatomic
BOT)    Test case #01.
        Test passed.
-->

<category>
<pattern>TESTATOMIC</pattern>
<template>Test case #01.<br/>
Test passed.
</template>
</category>

<!-- Test case #02.

This testcase tests the ability to display a variable while setting the variable.

TESTER) testdisplayset
BOT)    Test case #02.
        Test passed.
-->

<category>
<pattern>TESTDISPLAYSET</pattern>
<template>Test case #02.<br/>
<set name="test">Test passed.</set>
</template>
</category>

<!-- Test case #03.

This testcase tests the ability to hide a function using the think tag.

TESTER) testhide
BOT)    Test case #03.
        Test passed.
-->

<category>
<pattern>TESTHIDE</pattern>
<template>Test case #03.<br/>
<think><set name="test">Test failed.</set></think>
Test passed.
</template>
</category>

<!-- Test case #04.

This testcase tests the ability to display a variable with both forms of the get tag.

TESTER) testget
BOT)    Test case #04.
        Test passed 1.
        Test passed 2.
-->

<category>
<pattern>TESTGET</pattern>
<template>Test case #04.<br/>
<think><set name="test">Test passed</set></think>
<get name="test"/> 1.<br/>
<get_test/> 2.
</template>
</category>

<!-- Test case #04a.

This testcase tests the ability to use the set_xxx deprecated tag.

TESTER) testsetx
BOT)    Test case #04a.
        Test passed.
-->

<category>
<pattern>TESTSETX</pattern>
<template>Test case #04a.<br/>
<think><set name="test">Test failed</set></think>
<think><set_test>Test passed</set_test></think>
<get name="test"/>. 
</template>
</category>

<!-- Test case #05.

This testcase tests the ability to set a predicate value,
display a predicate value with the get tag
and then change the variable.

TESTER) testalter
BOT)    Test case #05.
        Test passed.
-->

<category>
<pattern>TESTALTER</pattern>
<template>Test case #05.<br/>
<think><set name="test">Test passed.</set></think>
<get name="test"/>
<think><set name="test">Test failed.</set></think>
</template>
</category>

<!-- Test case #06.
 
This testcase tests the bot's ability to set the topic, display the
topic with both forms of get,  and then use two same-pattern categories within
the topic, one with a that and one without.
 
TESTER) testsettopic
BOT)    Test case #06.
        Test passed topic 1.
        Test passed topic 2.
TESTER) test6a
BOT)    Test case #06a.
        Test with THAT passed.
TESTER) test6b
BOT)    Test case #06b.
        Test without THAT passed.
-->

<category>
<pattern>TESTSETTOPIC</pattern>
<template>Test case #06.<br/>
<think><set name="topic">Test passed topic</set></think>
<gettopic/> 1.<br/>
<get name="topic"/> 2.
</template>
</category>

<topic name="TEST PASSED TOPIC">
<category>
<pattern>TEST6A</pattern>
<that>TEST PASSED TOPIC 2</that>
<template>
Test case #06a.<br/>
Test with THAT passed.
</template>
</category>

<category>
<pattern>TEST6B</pattern>
<template>
Test case #06b.<br/>
Test without THAT passed.
<think><set name="topic"></set></think>
</template>
</category>

</topic>

<!-- Test case #07.

This testcase tests the bot's ability to use the simplest form of the condition tag.

TESTER) testsimplecondition
BOT)    Test case #07.
        Test passed.
TESTER) testsimpleconditiona
BOT)    Test case #07a.
        Test passed.
-->

<category>
<pattern>TESTSIMPLECONDITION</pattern>
<template>Test case #07.<br/>
<think><set name="test">match</set></think>
<condition name="test" value="match">Test passed.</condition>
<think><set name="test"></set></think>
</template>
</category>

<category>
<pattern>TESTSIMPLECONDITIONA</pattern>
<template>Test case #07a.<br/>
<srai>blindsetmatch</srai>
<condition name="test" value="match">Test passed.</condition>
<think><set name="test"></set></think>
</template>
</category>

<category>
<pattern>BLINDSETMATCH</pattern>
<template>
<think><set name="test">match</set></think>
</template>
</category>

<category>
<pattern>BLINDSETNOMATCH</pattern>
<template>
<think><set name="test">nomatch</set></think>
</template>
</category>

<!-- Test case #07b.

This testcase tests the bot's ability to match the value associated with
the name attribute of a <condition> with a pattern in the value attribute.

TESTER) testsimpleconditionmatch
BOT)    Test case #07b.
        Test passed.
-->

<category>
<pattern>TESTSIMPLECONDITIONMATCH</pattern>
<template>Test case #07b.
<think><set name="test">match this</set></think>
<condition name="test" value="match *">Test passed.</condition>
<think><set name="test"></set></think>
</template>
</category>


<!-- Test case #08.

This testcase tests the bot's ability to use the list form of the condition tag.

TESTER) testconditionlist
BOT)    Test case #08.
        Test passed.
-->

<category>
<pattern>TESTCONDITIONLIST</pattern>
<template>Test case #08.<br/>
<think><set name="test">match</set></think>
<condition name="test">
<li value="nomatch">Test failed 1.</li>
<li value="match">Test passed.</li>
<li value="nomatch">Test failed 2.</li>
<li>Test failed 3.</li>
</condition>
<think><set name="test"></set></think>
</template>
</category>

<!-- Test case #08a.

This testcase tests the bot's ability to match the value associated with
the name attribute of one of its listitems with a pattern in the value attribute
of the condition.

TESTER) testconditionlistmatch
BOT)    Test case #08a.
        Test passed.
-->

<category>
<pattern>TESTCONDITIONLISTMATCH</pattern>
<template>Test case #08a.<br/>
<think><set name="test">match this</set></think>
<condition name="test">
<li value="match">Test failed 1.</li>
<li value="match *">Test passed.</li>
<li>Test failed 3.</li>
</condition>
<think><set name="test"></set></think>
</template>
</category>


<!-- Test case #09.

This testcase tests the bot's ability to use the condition tag with the list
format and fall through to the default list entry when no other list items have a match.

TESTER) testconditionlistdefault
BOT)    Test case #09.
        Test passed.
-->

<category>
<pattern>TESTCONDITIONLISTDEFAULT</pattern>
<template>Test case #09.<br/>
<think><set name="test">match</set></think>
<condition name="test">
<li value="nomatch">Test failed 1.</li>
<li value="nomatch">Test failed 2.</li>
<li value="nomatch">Test failed 3.</li>
<li>Test passed.</li>
</condition>
<think><set name="test"></set></think>
</template>
</category>

<!-- Test case #10.

This testcase tests the bot's ability to use the condition tag with the list
format of both name and value.

TESTER) testconditionlistname
BOT)    Test case #10.
        Test passed.
-->

<category>
<pattern>TESTCONDITIONLISTNAME</pattern>
<template>Test case #10.<br/>
<think><set name="test">match</set></think>
<condition>
<li name="test" value="nomatch">Test failed 1.</li>
<li name="test" value="match">Test passed.</li>
<li name="test" value="nomatch">Test failed 2.</li>
<li>Test failed 3.</li>
</condition>
<think><set name="test"></set></think>
</template>
</category>

<!-- Test case #10a.

This testcase tests the bot's ability to match the value associated with
the name attribute of one of its listitems with a pattern in the value attribute
of the listitem.

TESTER) testconditionlistname
BOT)    Test case #10a.
        Test passed.
-->

<category>
<pattern>TESTCONDITIONLISTNAMEMATCH</pattern>
<template>Test case #10a.<br/>
<think><set name="test">match this</set></think>
<condition>
<li name="test" value="match">Test failed 1.</li>
<li name="test" value="match *">Test passed.</li>
<li name="test" value="match">Test failed 2.</li>
<li>Test failed 3.</li>
</condition>
<think><set name="test"></set></think>
</template>
</category>

<!-- Test case #11.

This testcase tests the bot's ability to use the star value both with and without the
index= parameter.

TESTER) teststar Test passed
BOT)    Test case #11.
        Test passed 1.
        Test passed 2.
-->

<category>
<pattern>TESTSTAR *</pattern>
<template>Test case #11.<br/>
<star index="1"/> 1.<br/>
<star/> 2.
</template>
</category>

<!-- Test case #11a.

This testcase tests the bot's ability to return the values
captured by indexed * (asterisk) wildcards.

TESTER) teststar Test passed one and Test passed two and Test passed three and Test passed four
BOT)    Test case #11a.
        star index 1: Test passed one.
        star index 2: Test passed two.
        star index 3: Test passed three. 
        star index 4: Test passed four. 
-->

<category>
<pattern>TESTSTAR * AND * AND * AND *</pattern>
<template>Test case #11a.<br/>
star index 1: <star index="1"/>.<br/>
star index 2: <star index="2"/>.<br/>
star index 3: <star index="3"/>.<br/>
star index 4: <star index="4"/>.<br/>
</template>
</category>

<!-- Test case #11b.

This testcase tests the bot's ability to return the values
captured by indexed _ (underscore) wildcards.

TESTER) testunderscore Test passed one and Test passed two and Test passed three and Test passed four
BOT)    Test case #11b.
        star index 1: Test passed one.
        star index 2: Test passed two.
        star index 3: Test passed three. 
        star index 4: Test passed four. 
-->

<category>
<pattern>TESTUNDERSCORE _ AND _ AND _ AND _</pattern>
<template>Test case #11b.<br/>
star index 1: <star index="1"/>.<br/>
star index 2: <star index="2"/>.<br/>
star index 3: <star index="3"/>.<br/>
star index 4: <star index="4"/>.<br/>
</template>
</category>


<!-- Test case #12.

This testcase tests the bot's ability to use the random function.

TESTER) testrandom
BOT)    Test case #12.
        Test passed "n".
-->

<category>
<pattern>TESTRANDOM</pattern>
<template>Test case #12.<br/>
<random>
<li>Test passed 1.</li>
<li>Test passed 2.</li>
<li>Test passed 3.</li>
<li>Test passed 4.</li>
<li>Test passed 5.</li>
</random>
</template>
</category>

<!-- Test case #13.

This testcase tests the bot's ability to adjust the word case based on
the four format tags, uppercase, lowercase, sentence, and formal.

TESTER) testwordformat
BOT)    Test case #13.
        Test passed if UPPERCASE.
        Test passed if lowercase.
        Test passed if Proper Name.
        Test passed if This is a sentence.
-->

<category>
<pattern>TESTWORDFORMAT</pattern>
<template>Test case #13.<br/>
Test passed if <uppercase>uppercase</uppercase>.<br/>
Test passed if <lowercase>lOwErCaSe</lowercase>.<br/>
Test passed if <formal>proper name</formal>.<br/>
Test passed if <sentence>this is a sentence.</sentence>
</template>
</category>

<!-- Test case #14.

This testcase tests the bot's ability to use nested word format tags.

TESTER) testnestedwordformat
BOT)    Test case #14.
        Test passed if THIS IS UPPER CASE, and this is a Proper Name.
-->

<category>
<pattern>TESTNESTEDWORDFORMAT</pattern>
<template>Test case #14.<br/>
<sentence>test passed if <uppercase>this is upper case</uppercase>, and this is a <formal>proper name</formal>.</sentence>
</template>
</category>

<!-- Test case #15.

This testcase tests the bot's ability to properly set the bot's last response
into the proper THAT value holders.  It issues a multi sentence response, which
should result in the bot's setting the THAT stack to each sentence.

TESTER) testsimplemultisentencethat
BOT)    Test case #15 setup. THAT plus two. THAT plus one. THAT.
TESTER) testthat
BOT)    Test case #15.
        THAT: Old form: THAT.
        New form: THAT.
        THAT+1: THAT plus one.
        THAT+2: THAT plus two.
-->

<category>
<pattern>TESTSIMPLEMULTISENTENCETHAT</pattern>
<template>Test case #15 setup. THAT plus two. THAT plus one. THAT.
</template>
</category>

<category>
<pattern>TESTTHAT</pattern>
<template>Test case #15.<br/>
THAT: Old form: <that/>.<br/>
New form: <that index="1,1"/>.<br/>
THAT+1: <that index="1,2"/>.<br/>
THAT+2: <that index="1,3"/>.<br/>
</template>
</category>

<!-- Test case #16.

This testcase tests the bot's ability to properly set the bot's last response
into the proper THAT value holders.  It specifically tests a 3X4 deep array
of the last four bot responses.  It has a setup phase, and a test phase.

TESTER) testarray4multisentencethat
BOT)    Test case #16 setup a.
        THAT array4 response three.
        THAT array4 response two.
        THAT array4 response one.
TESTER) testarray3multisentencethat
BOT)    Test case #16 setup b.
        THAT array3 response three.
        THAT array3 response two.
        THAT array3 response one.
TESTER) testarray2multisentencethat
BOT)    Test case #16 setup c.
        THAT array2 response three.
        THAT array2 response two.
        THAT array2 response one.
TESTER) testarray1multisentencethat
BOT)    Test case #16 setup d.
        THAT array1 response three.
        THAT array1 response two.
        THAT array1 response one.
TESTER) testthatarray
BOT)    Test case #16.
        Array 1
        THAT:   THAT array1 response one
        THAT+1: THAT array1 response two
        THAT+2: THAT array1 response three
        Array 2
        THAT:   THAT array2 response one
        test of justbeforethat tag: THAT array2 response one
        THAT+1: THAT array2 response two
        THAT+2: THAT array2 response three
        Array 3
        THAT:   THAT array3 response one
        THAT+1: THAT array3 response two
        THAT+2: THAT array3 response three
        Array 4
        THAT:   THAT array4 response one
        THAT+1: THAT array4 response two
        THAT+2: THAT array4 response three

-->

<category>
<pattern>TESTARRAY4MULTISENTENCETHAT</pattern>
<template>Test case #16 setup a.<br/>
THAT array4 response three.<br/>
THAT array4 response two.<br/>
THAT array4 response one.
</template>
</category>

<category>
<pattern>TESTARRAY3MULTISENTENCETHAT</pattern>
<template>Test case #16 setup b.<br/>
THAT array3 response three.<br/>
THAT array3 response two.<br/>
THAT array3 response one.
</template>
</category>

<category>
<pattern>TESTARRAY2MULTISENTENCETHAT</pattern>
<template>Test case #16 setup c.<br/>
THAT array2 response three.<br/>
THAT array2 response two.<br/>
THAT array2 response one.
</template>
</category>

<category>
<pattern>TESTARRAY1MULTISENTENCETHAT</pattern>
<template>Test case #16 setup d.<br/>
THAT array1 response three.<br/>
THAT array1 response two.<br/>
THAT array1 response one.
</template>
</category>

<category>
<pattern>TESTTHATARRAY</pattern>
<template>Test case #16.<br/>
Array 1<br/>
THAT:   <that index="1,1"/><br/>
THAT+1: <that index="1,2"/><br/>
THAT+2: <that index="1,3"/><br/>
Array 2<br/>
THAT:   <that index="2,1"/><br/>
test of justbeforethat tag: <justbeforethat/><br/>
THAT+1: <that index="2,2"/><br/>
THAT+2: <that index="2,3"/><br/>
Array 3<br/>
THAT:   <that index="3,1"/><br/>
THAT+1: <that index="3,2"/><br/>
THAT+2: <that index="3,3"/><br/>
Array 4<br/>
THAT:   <that index="4,1"/><br/>
THAT+1: <that index="4,2"/><br/>
THAT+2: <that index="4,3"/>
</template>
</category>

<!-- Test case #17.

This testcase tests the bot's ability to list all of the custom bot parameters,
using both the old and new formats.

Special note: This test case does not result in a simple PASS/FAIL.  It will produce
a list of bot parameters, in the following format:

   parameter name old form: xxxxxxx, new form: xxxxxxxx.

You will need to review the list to ensure both forms are identical, and that
you are getting the correct values for each parameter.

TESTER) testbotproperties
BOT)    Test case #17.
        (see special note)
-->

<category>
<pattern>TESTBOTPROPERTIES</pattern>
<template>Test case #17. 
Name old form: <name/>, new form: <bot name="name"/>.<br/>
Birthday old form: <birthday/>, new form: <bot name="birthday"/>.<br/>
BirthPlace old form: <birthplace/>, new form: <bot name="birthplace"/>.<br/>
BoyFriend old form: <boyfriend/>, new form: <bot name="boyfriend"/>.<br/>
Favorite Band old form: <favoriteband/>, new form: <bot name="favoriteband"/>.<br/>
Favorite Book old form: <favoritebook/>, new form: <bot name="favoritebook"/>.<br/>
Favorite Color old form: <favoritecolor/>, new form: <bot name="favoritecolor"/>.<br/>
Favorite Food old form: <favoritefood/>, new form: <bot name="favoritefood"/>.<br/>
Favorite Song old form: <favoritesong/>, new form: <bot name="favoritesong"/>.<br/>
Favorite Movie old form: <favoritemovie/>, new form: <bot name="favoritemovie"/>.<br/>
For Fun old form: <for_fun/>, new form: <bot name="forfun"/>.<br/>
Friends old form: <friends/>, new form: <bot name="friends"/>.<br/>
Gender old form: <gender/>, new form: <bot name="gender"/>.<br/>
GirlFriend old form: <girlfriend/>, new form: <bot name="girlfriend"/>.<br/>
Kind of Music old form: <kind_music/>, new form: <bot name="kindmusic"/>.<br/>
Location old form: <location/>, new form: <bot name="location"/>.<br/>
Look Like old form: <look_like/>, new form: <bot name="looklike"/>.<br/>
Botmaster old form: <botmaster/>, new form: <bot name="master"/>.<br/>
Question old form: <question/>, new form: <bot name="question"/>.<br/>
Sign old form: <sign/>, new form: <bot name="sign"/>.<br/>
Talk About old form: <talk_about/>, new form: <bot name="talkabout"/>.<br/>
Wear old form: <wear/>, new form: <bot name="wear"/>.<br/>
</template>
</category>

<!-- Test case #18.

This testcase tests the bot's ability to use a set within a condition and then
display the new value of that set using the VALUE= parameter.

TESTER) testconditionsetvalue
BOT)    Test case #18.
        Test passed.
-->

<category>
<pattern>TESTCONDITIONSETVALUE</pattern>
<template>Test case #18.<br/>
<think><set name="test1"></set></think>
<think><set name="test">testvalue</set></think>
<condition>
<li name="test" value="nomatch"><think><set name="test1">Test failed</set></think><get name="test1"/>.</li>
<li name="test" value="testvalue"><think><set name="test1">Test passed</set></think><get name="test1"/>.</li>
<li name="test" value="nomatch"><think><set name="test1">Test failed</set></think><get name="test1"/>.</li>
<li>Test failed.</li>
</condition>
<think><set name="test1"></set></think>
<think><set name="test"></set></think>
</template>
</category>

<!-- Test case #19.

Test case #19 has been removed.

-->

<!-- Test case #20.

This testcase tests the bot's ability to process nested conditions.

TESTER) testnestedcondition
BOT)    Test case #20a.
        Test passed.
TESTER) testnestedcondition1
BOT)    Test case #20b.
        Test passed.
TESTER) testnestedcondition2
BOT)    Test case #20c.
        Test passed.
-->


<category>
<pattern>TESTNESTEDCONDITION</pattern>
<template>Test case #20a.<br/>
<think><set name="test">test</set></think>
<think><set name="test1">test1</set></think>
<condition> 
<li name="test" value="test"> 
<condition> 
<li name="test1" value="nomatch">Test failed.</li> 
<li>Test passed.</li> 
</condition></li> 
<li>Test failed.</li> 
</condition>
<think><set name="test1"></set></think>
<think><set name="test"></set></think>
</template>
</category>

<category>
<pattern>TESTNESTEDCONDITION1</pattern>
<template>Test case #20b.<br/>
<think><set name="test">test</set></think>
<think><set name="test1">test1</set></think>
<condition> 
<li name="test" value="test"> 
<condition> 
<li name="test1" value="test1">Test passed.</li> 
<li>Test failed.</li> 
</condition></li> 
<li>Test failed.</li> 
</condition>
<think><set name="test1"></set></think>
<think><set name="test"></set></think>
</template>
</category>

<category>
<pattern>TESTNESTEDCONDITION2</pattern>
<template>Test case #20c.<br/>
<think><set name="test">test</set></think>
<think><set name="test1">test1</set></think>
<condition> 
<li name="test" value="nomatch"> 
<condition> 
<li name="test1" value="nomatch">Test failed.</li> 
<li>Test failed.</li> 
</condition></li> 
<li>Test passed.</li> 
</condition>
<think><set name="test1"></set></think>
<think><set name="test"></set></think>
</template>
</category>

<!-- Test case #21.
 
This testcase tests the bot's ability to process a condition tag within a set tag.
 
TESTER) testsetcondition
BOT)    Test case #21.
        Test passed.
-->

<category>
<pattern>TESTSETCONDITION</pattern>
<template>Test case #21.<br/>
<think>
<set name="test">Test failed</set>
<set name="test1">pass</set>
</think>
<set name="testcase">
<condition name="test1">
<li value="nomatch">Test failed 1.</li>
<li value="pass">Test passed.</li>
<li value="nomatch">Test failed 2.</li>
<li>Test failed 3</li>
</condition>
</set>
<think><set name="test1"></set></think>
<think><set name="test"></set></think>
</template>
</category>

<!-- Test case #22.
 
This testcase tests the bot's ability to display both "version" tags.
 
TESTER) testversion
BOT)    Test case #22.
        Test of "getversion": #
        Test of "version": #
-->

<category>
<pattern>TESTVERSION</pattern>
<template>Test case #22.<br/>
Test of "getversion": <getversion/><br/>
Test of "version": <version/>
</template>
</category>

<!-- Test case #23.
 
This testcase tests the bot's ability to use a simple srai.
 
TESTER) testsrai
BOT)    Test case #23.
        Test passed.
-->

<category>
<pattern>TESTSRAI</pattern>
<template>Test case #23.<br/>
<srai>SRAISUCCEEDED</srai>
</template>
</category>

<category>
<pattern>SRAISUCCEEDED</pattern>
<template>
Test passed.
</template>
</category>

<!-- Test case #23a.
 
This testcase tests the bot's ability to use the sr/ tag.
 
TESTER) testsr sraisucceeded
BOT)    Test case #23a.
        Test passed.
-->

<category>
<pattern>TESTSR *</pattern>
<template>Test case #23a.<br/>
<sr/>
</template>
</category>

<!-- Test case #24.
 
This testcase tests the bot's ability to use a nested srai.
 
TESTER) testnestedsrai
BOT)    Test case #24.
        Test passed.
-->

<category>
<pattern>TESTNESTEDSRAI</pattern>
<template>Test case #24.<br/>
<srai>SRAINESTED</srai>
</template>
</category>

<category>
<pattern>SRAINESTED</pattern>
<template>
<srai>SRAISUCCEEDED</srai>
</template>
</category>

<!-- Test case #25.
 
This testcase tests the bot's ability to <think> a srai.  This is an unusual type of
test, because the srai being called would normally provide an output, but because the
srai is called within a <think> tag, its output should be supressed.
 
TESTER) testthinksrai
BOT)    Test case #25.
        Test passed, IF NO OTHER MESSAGE.
-->

<category>
<pattern>TESTTHINKSRAI</pattern>
<template>Test case #25.<br/>
Test passed, IF NO OTHER MESSAGE.
<think><srai>TSRAI</srai></think>
</template>
</category>

<category>
<pattern>TSRAI</pattern>
<template>
Test failed.
</template>
</category>

<!-- Test case #26.
 
This testcase tests the bot's ability to set the value of a predicate
from inside a <think> and then display the value.
 
TESTER) teststarset Test passed
BOT)    Test passed
-->

<category>
<pattern>TESTSTARSET *</pattern>
<template>Test case #26.<br/>
<think><set name="test"><star/></set></think>
<get name="test"/>.
</template>
</category>

<!-- Test case #27.

This testcase tests the bot's ability to use the <id/>, <size/>, <date/> tags. 

TESTER) testidsizedate
BOT)    Test case #27.
        Result of Test ID = {id}
        OLD TAG: Result of Test GET_IP: {id}
        Result of Test SIZE = {number of categories}
        OLD TAG: Result of Test GETSIZE = {number of categories}
        Result of Test DATE: {date}
-->

<category>
<pattern>TESTIDSIZEDATE</pattern>
<template>Test case #27.<br/>
Result of Test ID = <id/><br/>
OLD TAG: Result of Test GET_IP = <get_ip/><br/>
Result of Test SIZE = <size/><br/>
OLD TAG: Result of Test GETSIZE = <getsize/><br/>
Result of Test DATE = <date/>
</template>
</category>

<!-- Test case #28.

This testcase tests the bot's ability to use the <gossip> tags. 

TESTER) testgossip
BOT)    Test case #28.
        Test complete.

Check the "gossip.log file to ensure a new line was added with the current date and time.
-->

<category>
<pattern>TESTGOSSIP</pattern>
<template>Test case #28.<br/>
<think><gossip>This line should appear in the gossip log file <date/>.</gossip></think>
Test complete. Check the gossip log.
</template>
</category>

<!-- Test case #29.

This testcase tests the bot's ability to use the old and new <setname> and <getname> tags. 

TESTER) testname
BOT)    Test case #29.
        Old form: test passed
        new form: test passed
        Old form: TEST PASSED
        new form: TEST PASSED
-->

<category>
<pattern>TESTNAME</pattern>
<template>Test case #29.<br/>
<think><set name="name">test passed</set></think>
Old form: <getname/><br/>
new form: <get name="name"/><br/>
<think><setname>TEST PASSED</setname></think>
Old form: <getname/><br/>
new form: <get name="name"/><br/>
<think><set name="name">Client</set></think>
</template>
</category>

<!-- Test case #30.

This testcase tests the bot's ability to use the input tags and their deprecated predecessors. 

TESTER) testinput
BOT)    Test case #30 setup a okay.
TESTER) testinput1
BOT)    Test case #30 setup b okay.
TESTER) testinput2
BOT)    Test case #30 setup c okay.
TESTER) testinput3
BOT)    Test case #30.
        Test (input) passed if this says testinput3: testinput3.
        Test (justthat) passed if this says testinput2: testinput3.
        Test (beforethat) passed if this says testinput1: testinput1.
        Test (input index 1) passed if this says testinput3: testinput3.
        Test (input index 2) passed if this says testinput2: testinput2.
        Test (input index 3) passed if this says testinput1: testinput1.
        Test (input index 4) passed if this says testinput: testinput.
-->

<category>
<pattern>TESTINPUT3</pattern>
<template>Test case #30.<br/>
Test (input) passed if this says testinput3: <input/>.<br/>
Test (justthat) passed if this says testinput2: <justthat/>.<br/>
Test (beforethat) passed if this says testinput1: <beforethat/>.<br/>
Test (input index 1) passed if this says testinput3: <input index="1"/>.<br/>
Test (input index 2) passed if this says testinput2: <input index="2"/>.<br/>
Test (input index 3) passed if this says testinput1: <input index="3"/>.<br/>
Test (input index 4) passed if this says testinput: <input index="4"/>.<br/>
</template>
</category>

<category>
<pattern>TESTINPUT</pattern>
<template>
Test case #30 setup a okay.
</template>
</category>

<category>
<pattern>TESTINPUT1</pattern>
<template>
Test case #30 setup b okay.
</template>
</category>

<category>
<pattern>TESTINPUT2</pattern>
<template>
Test case #30 setup c okay.
</template>
</category>

<!-- Test case #31.

This testcase tests the bot's ability to use the gender tags. 

TESTER) testgender he
BOT)    Test case #31.
        he becomes she
TESTER) testgender she
BOT)    Test case #31.
        she becomes he
TESTER) testgender to him
BOT)    Test case #31.
        to him becomes to her
TESTER) testgender for him
BOT)    Test case #31.
        for him becomes for her
TESTER) testgender with him
BOT)    Test case #31.
        with him becomes with her
TESTER) testgender on him
BOT)    Test case #31.
        on him becomes on her
TESTER) testgender in him
BOT)    Test case #31.
        in him becomes in her
TESTER) testgender to her
BOT)    Test case #31.
        to her becomes to him
TESTER) testgender for her
BOT)    Test case #31.
        for her becomes for him
TESTER) testgender with her
BOT)    Test case #31.
        with her becomes with him
TESTER) testgender on her
BOT)    Test case #31.
        on her becomes on him
TESTER) testgender in her
BOT)    Test case #31.
        in her becomes in him
TESTER) testgender his
BOT)    Test case #31.
        his becomes her
TESTER) testgender her
BOT)    Test case #31.
        her becomes his
TESTER) testgender him
BOT)    Test case #31.
        him becomes her

-->

<category>
<pattern>TESTGENDER *</pattern>
<template>Test case #31.<br/>
<star/> becomes <gender><star/></gender>
</template>
</category>


<!-- Test case #32.

This testcase tests the bot's ability to access the THATSTAR.

TESTER) testthatstar
BOT)    Test case #32 setup.
        Check next to see if test passed.
TESTER) testthatstar1
BOT)    THATSTAR: test passed THATSTAR INDEX="1": test passed
-->

<category>
<pattern>TESTTHATSTAR</pattern>
<template>Test case #32 setup.<br/>
Check next to see if Test passed.
</template>
</category>

<category>
<pattern>TESTTHATSTAR1</pattern>
<that>CHECK NEXT TO SEE IF *</that>
<template>
Test case #32.<br/>
THATSTAR: <thatstar/><br/>
THATSTAR INDEX="1": <thatstar index="1"/>
</template>
</category>


<!-- Test case #33.

This testcase tests the bot's ability to access multi levels of THATSTAR.

TESTER) testmultithatstar
BOT)    Test case #33 setup.
        See whether thatstar test passed and whether index two test passed and whether index three test passed next.
TESTER) testthatstar1
BOT)    Test case #33.
        THATSTAR: thatstar test passed
        THATSTAR INDEX="1": thatstar test passed
        THATSTAR INDEX="2": index two test passed
        THATSTAR INDEX="3": index three test passed
-->

<category>
<pattern>TESTMULTITHATSTAR</pattern>
<template>Test case #33 setup.<br/>
See whether thatstar test passed and whether index two test passed and whether index three test passed next.
</template>
</category>

<category>
<pattern>TESTMULTITHATSTAR1</pattern>
<that>SEE WHETHER * AND WHETHER * AND WHETHER * NEXT</that>
<template>
Test case #33.<br/>
THATSTAR: <thatstar/><br/>
THATSTAR INDEX="1": <thatstar index="1"/><br/>
THATSTAR INDEX="2": <thatstar index="2"/><br/>
THATSTAR INDEX="3": <thatstar index="3"/>
</template>
</category>

<!-- Test case #34.

This testcase tests the bot's ability to access the TOPICSTAR.

TESTER) testtopicstar
BOT)    Test case #34 setup okay.
TESTER) test34
BOT)    Test case #34.
        TOPICSTAR: test passed
        TOPICSTAR INDEX="1": test passed
-->

<category>
<pattern>TESTTOPICSTAR</pattern>
<template>
Test case #34 setup okay.
<think><set name="topic">TOPICSTAR Test passed TOPIC</set></think>
</template>
</category>

<topic name="TOPICSTAR * TOPIC">
<category>
<pattern>TEST34</pattern>
<template>Test case #34.<br/>
TOPICSTAR: <topicstar/><br/>
TOPICSTAR INDEX="1": <topicstar index="1"/>
<think><set name="topic"></set></think>
</template>
</category>

</topic>

<!-- Test case #35.

This testcase tests the bot's ability to access multi levels of TOPICSTAR.

TESTER) testmultitopicstar
BOT)    Test case #35 setup okay.
TESTER) test35
BOT)    Test case #35.
        TOPICSTAR: test passed1
        TOPICSTAR INDEX="1": test passed1
        TOPICSTAR INDEX="2": test passed2
        TOPICSTAR INDEX="3": test passed3
-->

<category>
<pattern>TESTMULTITOPICSTAR</pattern>
<template>
Test case #35 setup okay.
<think><set name="topic">MULTITOPICSTAR Test passed 1 TOPIC Test passed 2 TOPIC1 Test passed 3</set></think>
</template>
</category>

<topic name="MULTITOPICSTAR * TOPIC * TOPIC1 *">
<category>
<pattern>TEST35</pattern>
<template>Test case #35.<br/>
TOPICSTAR: <topicstar/><br/>
TOPICSTAR INDEX="1": <topicstar index="1"/><br/>
TOPICSTAR INDEX="2": <topicstar index="2"/><br/>
TOPICSTAR INDEX="3": <topicstar index="3"/>
<think><set name="topic"></set></think>
</template>
</category>

</topic>

<!-- Test case #36.

This testcase tests the bot's ability to set the topic with the deprecated <settopic> tag.

TESTER) testoldtopic
BOT)    Test case #36 setup okay.
TESTER) test36
BOT)    Test case #36.
        test passed
-->

<category>
<pattern>TESTOLDTOPIC</pattern>
<template>
Test case #36 setup okay.
<think><settopic>oldtopic</settopic></think>
</template>
</category>

<topic name="OLDTOPIC">
<category>
<pattern>TEST36</pattern>
<template>Test case #36.<br/>
Test passed.
<think><settopic></settopic></think>
</template>
</category>

</topic>

<!-- Test case #37.
 
This testcase tests the bot's ability to do an extreme nested (20 deep) srai.
 
TESTER) testextrmesrai
BOT)    Test case #37.
        Test passed.
-->

<category>
<pattern>TESTEXTREMESRAI</pattern>
<template>Test case #37.<br/>
<srai>SRAI20</srai>
</template>
</category>

<category>
<pattern>SRAI20</pattern>
<template>
<srai>SRAI19</srai>
</template>
</category>

<category>
<pattern>SRAI19</pattern>
<template>
<srai>SRAI18</srai>
</template>
</category>

<category>
<pattern>SRAI18</pattern>
<template>
<srai>SRAI17</srai>
</template>
</category>

<category>
<pattern>SRAI17</pattern>
<template>
<srai>SRAI16</srai>
</template>
</category>

<category>
<pattern>SRAI16</pattern>
<template>
<srai>SRAI15</srai>
</template>
</category>

<category>
<pattern>SRAI15</pattern>
<template>
<srai>SRAI14</srai>
</template>
</category>

<category>
<pattern>SRAI14</pattern>
<template>
<srai>SRAI13</srai>
</template>
</category>

<category>
<pattern>SRAI13</pattern>
<template>
<srai>SRAI12</srai>
</template>
</category>

<category>
<pattern>SRAI12</pattern>
<template>
<srai>SRAI11</srai>
</template>
</category>

<category>
<pattern>SRAI11</pattern>
<template>
<srai>SRAI10</srai>
</template>
</category>

<category>
<pattern>SRAI10</pattern>
<template>
<srai>SRAI9</srai>
</template>
</category>

<category>
<pattern>SRAI9</pattern>
<template>
<srai>SRAI8</srai>
</template>
</category>

<category>
<pattern>SRAI8</pattern>
<template>
<srai>SRAI7</srai>
</template>
</category>

<category>
<pattern>SRAI7</pattern>
<template>
<srai>SRAI6</srai>
</template>
</category>

<category>
<pattern>SRAI6</pattern>
<template>
<srai>SRAI5</srai>
</template>
</category>

<category>
<pattern>SRAI5</pattern>
<template>
<srai>SRAI4</srai>
</template>
</category>

<category>
<pattern>SRAI4</pattern>
<template>
<srai>SRAI3</srai>
</template>
</category>

<category>
<pattern>SRAI3</pattern>
<template>
<srai>SRAI2</srai>
</template>
</category>

<category>
<pattern>SRAI2</pattern>
<template>
<srai>SRAI1</srai>
</template>
</category>

<category>
<pattern>SRAI1</pattern>
<template>
<srai>SRAISUCCEEDED</srai>
</template>
</category>


<!-- Test case #38.

This testcase tests the bot's ability to use the <person> tag.

TESTER) testperson i was
BOT)    Test case #38.
        i was becomes he or she was
TESTER) testperson he was
BOT)    Test case #38.
        he was becomes I was
TESTER) testperson she was
BOT)    Test case #38.
        she was becomes I was
TESTER) testperson i am
BOT)    Test case #38.
        i am becomes he or she is
TESTER) testperson i
BOT)    Test case #38.
        i becomes he or she
TESTER) testperson me
BOT)    Test case #38.
        me becomes him or her
TESTER) testperson my
BOT)    Test case #38.
        my becomes his or her
TESTER) testperson myself
BOT)    Test case #38.
        myself becomes him or herself
TESTER) testperson mine
BOT)    Test case #38.
        mine becomes his or hers
-->

<category>
<pattern>TESTPERSON *</pattern>
<template>
Test case #38.<br/>
<star/> becomes <person/>
</template>
</category>


<!-- Test case #39.

This testcase tests the bot's ability to use the <person2> tag.

TESTER) testperson2 with you
BOT)    Test case #39.
        with you becomes with me
TESTER) testperson2 with me
BOT)    Test case #39.
        with me becomes with you
TESTER) testperson2 to you
BOT)    Test case #39.
        to you becomes to me
TESTER) testperson2 to me
BOT)    Test case #39.
        to me becomes to you
TESTER) testperson2 of you
BOT)    Test case #39.
        of you becomes of me
TESTER) testperson2 of me
BOT)    Test case #39.
        of me becomes of you
TESTER) testperson2 for you
BOT)    Test case #39.
        for you becomes for me
TESTER) testperson2 for me
BOT)    Test case #39.
        for me becomes for you
TESTER) testperson2 give you
BOT)    Test case #39.
        give you becomes give me
TESTER) testperson2 give me
BOT)    Test case #39.
        give me becomes give you
TESTER) testperson2 giving you
BOT)    Test case #39.
        giving you becomes giving me
TESTER) testperson2 giving me
BOT)    Test case #39.
        giving me becomes giving you
TESTER) testperson2 gave you
BOT)    Test case #39.
        gave you becomes gave me
TESTER) testperson2 gave me
BOT)    Test case #39.
        gave me becomes gave you
TESTER) testperson2 make you
BOT)    Test case #39.
        make you becomes make me
TESTER) testperson2 make me
BOT)    Test case #39.
        make me becomes make you
TESTER) testperson2 made you
BOT)    Test case #39.
        made you becomes made me
TESTER) testperson2 made me
BOT)    Test case #39.
        made me becomes made you
-->

<category>
<pattern>TESTPERSON2 *</pattern>
<template>
Test case #39.<br/>
<star/> becomes <person2/>
</template>
</category>

</aiml>
