Files
picard/test/test_script.py
2007-01-20 19:05:58 +01:00

115 lines
4.2 KiB
Python

import unittest
from picard.script import ScriptParser
from picard.component import ComponentManager
class MiscModelTest(unittest.TestCase):
def setUp(self):
self.parser = ScriptParser()
def test_cmd_noop(self):
self.failUnlessEqual(self.parser.eval("$noop()"), "")
def test_cmd_if(self):
self.failUnlessEqual(self.parser.eval("$if(1,a,b)"), "a")
self.failUnlessEqual(self.parser.eval("$if(,a,b)"), "b")
def test_cmd_if2(self):
self.failUnlessEqual(self.parser.eval("$if2(,a,b)"), "a")
self.failUnlessEqual(self.parser.eval("$if2($noop(),b)"), "b")
def test_cmd_left(self):
self.failUnlessEqual(self.parser.eval("$left(abcd,2)"), "ab")
def test_cmd_right(self):
self.failUnlessEqual(self.parser.eval("$right(abcd,2)"), "cd")
def test_cmd_set(self):
self.failUnlessEqual(self.parser.eval("$set(test,aaa)%test%"), "aaa")
def test_cmd_get(self):
self.failUnlessEqual(self.parser.eval("$get(test)", {"test": "aaa"}), "aaa")
def test_cmd_num(self):
self.failUnlessEqual(self.parser.eval("$num(3,3)"), "003")
self.failUnlessEqual(self.parser.eval("$num(03,3)"), "003")
self.failUnlessEqual(self.parser.eval("$num(123,2)"), "123")
def test_cmd_or(self):
self.failUnlessEqual(self.parser.eval("$or(,)"), "")
self.failUnlessEqual(self.parser.eval("$or(,q)"), "1")
self.failUnlessEqual(self.parser.eval("$or(q,)"), "1")
self.failUnlessEqual(self.parser.eval("$or(q,q)"), "1")
def test_cmd_and(self):
self.failUnlessEqual(self.parser.eval("$and(,)"), "")
self.failUnlessEqual(self.parser.eval("$and(,q)"), "")
self.failUnlessEqual(self.parser.eval("$and(q,)"), "")
self.failUnlessEqual(self.parser.eval("$and(q,q)"), "1")
def test_cmd_not(self):
self.failUnlessEqual(self.parser.eval("$not($noop())"), "1")
self.failUnlessEqual(self.parser.eval("$not(q)"), "")
def test_cmd_add(self):
self.failUnlessEqual(self.parser.eval("$add(1,2)"), "3")
def test_cmd_sub(self):
self.failUnlessEqual(self.parser.eval("$sub(1,2)"), "-1")
self.failUnlessEqual(self.parser.eval("$sub(2,1)"), "1")
def test_cmd_div(self):
self.failUnlessEqual(self.parser.eval("$div(9,3)"), "3")
self.failUnlessEqual(self.parser.eval("$div(10,3)"), "3")
def test_cmd_mod(self):
self.failUnlessEqual(self.parser.eval("$mod(9,3)"), "0")
self.failUnlessEqual(self.parser.eval("$mod(10,3)"), "1")
def test_cmd_mul(self):
self.failUnlessEqual(self.parser.eval("$mul(9,3)"), "27")
self.failUnlessEqual(self.parser.eval("$mul(10,3)"), "30")
def test_cmd_eq(self):
self.failUnlessEqual(self.parser.eval("$eq(,)"), "1")
self.failUnlessEqual(self.parser.eval("$eq(,$noop())"), "1")
self.failUnlessEqual(self.parser.eval("$eq(,q)"), "")
self.failUnlessEqual(self.parser.eval("$eq(q,q)"), "1")
self.failUnlessEqual(self.parser.eval("$eq(q,)"), "")
def test_cmd_ne(self):
self.failUnlessEqual(self.parser.eval("$ne(,)"), "")
self.failUnlessEqual(self.parser.eval("$ne(,$noop())"), "")
self.failUnlessEqual(self.parser.eval("$ne(,q)"), "1")
self.failUnlessEqual(self.parser.eval("$ne(q,q)"), "")
self.failUnlessEqual(self.parser.eval("$ne(q,)"), "1")
def test_cmd_lower(self):
self.failUnlessEqual(self.parser.eval("$lower(AbeCeDA)"), "abeceda")
def test_cmd_upper(self):
self.failUnlessEqual(self.parser.eval("$upper(AbeCeDA)"), "ABECEDA")
def test_cmd_rreplace(self):
self.failUnlessEqual(
self.parser.eval(r'''$rreplace(test \(disc 1\),\\s\\\(disc \\d+\\\),)'''),
"test"
)
def test_cmd_rsearch(self):
self.failUnlessEqual(
self.parser.eval(r"$rsearch(test \(disc 1\),\\\(disc \(\\d+\)\\\))"),
"1"
)
class TagzParserTest(unittest.TestCase):
def setUp(self):
self.parser = ScriptParser()
def test_arguments(self):
self.failUnless(
self.parser.eval(
r"$set(bleh,$rsearch(test \(disc 1\),\\\(disc \(\\d+\)\\\)))) $set(wer,1)"))