Doctests for the kfmtoaster script
==================================

The --spells switch
-------------------

>>> import os
>>> from os.path import dirname
>>> dirpath = __file__
>>> for i in range(3): #recurse up to root repo dir
...     dirpath = dirname(dirpath)
>>> repo_root = dirpath
>>> script_dir = os.path.join(repo_root, "scripts", "nif")
>>> import sys
>>> script = os.path.join(script_dir, "kfmtoaster.py")
>>> sys.path.insert(-1, script_dir.replace("\\\\", "/"))


>>> kfm_dir = "tests/formats/kfm/"
>>> kfm_file = kfm_dir + "test.kfm"

>>> import sys
>>> sys.path.append("scripts/kfm")
>>> import kfmtoaster
>>> sys.argv = ["kfmtoaster.py", "--verbose=1", "--raise", "--spells"]
>>> kfmtoaster.KfmToaster().cli()  # doctest: +REPORT_UDIFF
check_read
check_readwrite
dump

The check_read and check_readwrite spells
-----------------------------------------

>>> sys.argv = ["kfmtoaster.py", "--verbose=1", "--raise", "check_read", kfm_dir]
>>> kfmtoaster.KfmToaster().cli() # doctest: +ELLIPSIS
pyffi.toaster:INFO:=== tests/formats/kfm/test.kfm ===
pyffi.toaster:INFO:  --- check_read ---
pyffi.toaster:INFO:Finished.


>>> sys.argv = ["kfmtoaster.py", "--raise", "--verbose=1", "check_readwrite", kfm_dir]
>>> kfmtoaster.KfmToaster().cli() # doctest: +ELLIPSIS
pyffi.toaster:INFO:=== tests/kfm/test.kfm ===
pyffi.toaster:INFO:  --- check_readwrite ---
pyffi.toaster:INFO:  writing to temporary file
pyffi.toaster:INFO:Finished.

The dump spell
--------------

>>> sys.argv = ["kfmtoaster.py", "--verbose=1", "--raise", "dump", kfm_file]
>>> kfmtoaster.KfmToaster().cli() # doctest: +ELLIPSIS +REPORT_UDIFF
pyffi.toaster:INFO:=== tests/formats/kfm/test.kfm ===
pyffi.toaster:INFO:  --- dump ---
pyffi.toaster:INFO:    <class 'pyffi.formats.kfm.Header'> instance at ...
pyffi.toaster:INFO:    * header_string : ;Gamebryo KFM File Version x.x.x.x
pyffi.toaster:INFO:    * text_string : <UNDECODED DATA>
pyffi.toaster:INFO:    * unknown_byte : 0
pyffi.toaster:INFO:    * nif_file_name : Test.nif
pyffi.toaster:INFO:    * master : <None>
pyffi.toaster:INFO:    * unknown_int_1 : 0
pyffi.toaster:INFO:    * unknown_int_2 : 0
pyffi.toaster:INFO:    * unknown_float_1 : 0.0
pyffi.toaster:INFO:    * unknown_float_2 : 0.0
pyffi.toaster:INFO:    * num_animations : 4
pyffi.toaster:INFO:    * animations :
pyffi.toaster:INFO:        <class 'pyffi.object_models.xml.array.Array'> instance at ...
pyffi.toaster:INFO:        0: <class 'pyffi.formats.kfm.Animation'> instance at ...
pyffi.toaster:INFO:        * event_code : 0
pyffi.toaster:INFO:        * name : <None>
pyffi.toaster:INFO:        * kf_file_name : Test_MD_Idle.kf
pyffi.toaster:INFO:        * index : 0
pyffi.toaster:INFO:        * num_transitions : 0
pyffi.toaster:INFO:        * transitions : <class 'pyffi.object_models.xml.array.Array'> instance at ...
pyffi.toaster:INFO:        1: <class 'pyffi.formats.kfm.Animation'> instance at ...
pyffi.toaster:INFO:        * event_code : 0
pyffi.toaster:INFO:        * name : <None>
pyffi.toaster:INFO:        * kf_file_name : Test_MD_Run.kf
pyffi.toaster:INFO:        * index : 0
pyffi.toaster:INFO:        * num_transitions : 0
pyffi.toaster:INFO:        * transitions : <class 'pyffi.object_models.xml.array.Array'> instance at ...
pyffi.toaster:INFO:        2: <class 'pyffi.formats.kfm.Animation'> instance at ...
pyffi.toaster:INFO:        * event_code : 0
pyffi.toaster:INFO:        * name : <None>
pyffi.toaster:INFO:        * kf_file_name : Test_MD_Walk.kf
pyffi.toaster:INFO:        * index : 0
pyffi.toaster:INFO:        * num_transitions : 0
pyffi.toaster:INFO:        * transitions : <class 'pyffi.object_models.xml.array.Array'> instance at ...
pyffi.toaster:INFO:        3: <class 'pyffi.formats.kfm.Animation'> instance at ...
pyffi.toaster:INFO:        * event_code : 0
pyffi.toaster:INFO:        * name : <None>
pyffi.toaster:INFO:        * kf_file_name : Test_MD_Die.kf
pyffi.toaster:INFO:        * index : 0
pyffi.toaster:INFO:        * num_transitions : 0
pyffi.toaster:INFO:        * transitions : <class 'pyffi.object_models.xml.array.Array'> instance at ...
pyffi.toaster:INFO:    * unknown_int : 0
pyffi.toaster:INFO:
pyffi.toaster:INFO:Finished.