~divmod-dev/divmod.org/dangling-1091

« back to all changes in this revision

Viewing changes to Axiom/axiom/test/newapp.py

  • Committer: glyph
  • Date: 2005-07-28 22:09:16 UTC
  • Revision ID: svn-v4:866e43f7-fbfc-0310-8f2a-ec88d1da2979:trunk:2
move this repository to a more official-looking URL

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- test-case-name: axiom.test.test_upgrading -*-
 
2
 
 
3
 
 
4
from axiom.item import Item
 
5
from axiom.attributes import text, integer, reference
 
6
 
 
7
from axiom.upgrade import registerUpgrader
 
8
 
 
9
class Adventurer(Item):
 
10
    typeName = 'test_app_player'
 
11
    schemaVersion = 2
 
12
 
 
13
    name = text()
 
14
 
 
15
 
 
16
class Sword(Item):
 
17
    typeName = 'test_app_sword'
 
18
    schemaVersion = 2
 
19
 
 
20
    name = text()
 
21
    damagePerHit = integer()
 
22
    owner = reference()
 
23
 
 
24
 
 
25
def upgradePlayerAndSword(oldplayer):
 
26
    newplayer = oldplayer.upgradeVersion('test_app_player', 1, 2)
 
27
    newplayer.name = oldplayer.name
 
28
 
 
29
    oldsword = oldplayer.sword
 
30
 
 
31
    newsword = oldsword.upgradeVersion('test_app_sword', 1, 2)
 
32
    newsword.name = oldsword.name
 
33
    newsword.damagePerHit = oldsword.hurtfulness * 2
 
34
    newsword.owner = newplayer
 
35
 
 
36
    return newplayer, newsword
 
37
 
 
38
def player1to2(oldplayer):
 
39
    newplayer, newsword = upgradePlayerAndSword(oldplayer)
 
40
    return newplayer
 
41
 
 
42
def sword1to2(oldsword):
 
43
    oldPlayerType = oldsword.store.getOldVersionOf('test_app_player', 1)
 
44
    oldplayer = list(oldsword.store.query(oldPlayerType,
 
45
                                          oldPlayerType.sword == oldsword))[0]
 
46
    newplayer, newsword = upgradePlayerAndSword(oldplayer)
 
47
    return newsword
 
48
 
 
49
 
 
50
registerUpgrader(sword1to2, 'test_app_sword', 1, 2)
 
51
registerUpgrader(player1to2, 'test_app_player', 1, 2)
 
52