/tests/qt_manifestmodel_test.py
https://bitbucket.org/tortoisehg/hgtk/ · Python · 154 lines · 127 code · 27 blank · 0 comment · 1 complexity · 877dcfb2721c74f49e95d503e4f5c8f3 MD5 · raw file
- from nose.tools import *
- from PyQt4.QtCore import QModelIndex, QString
- from tortoisehg.hgqt.manifestmodel import ManifestModel
- from tests import get_fixture_repo, with_encoding
- _aloha_ja = u'\u3042\u308d\u306f\u30fc'
- def setup():
- global _repos
- _repos = {}
- for name in ('subdirs', 'euc-jp-path'):
- _repos[name] = get_fixture_repo(name)
- def newmodel(name='subdirs', rev=0):
- return ManifestModel(_repos[name], rev=rev)
- def test_data():
- m = newmodel()
- assert_equals('bar', m.data(m.index(1, 0)))
- assert_equals('baz', m.data(m.index(0, 0)))
- assert_equals('foo', m.data(m.index(2, 0)))
- def test_data_subdir():
- m = newmodel()
- assert_equals('bax', m.data(m.index(0, 0, m.index(0, 0))))
- assert_equals('box', m.data(m.index(1, 0, m.index(0, 0))))
- def test_data_inexistent():
- m = newmodel()
- assert_equals(None, m.data(QModelIndex()))
- assert_equals(None, m.data(m.index(0, 0, m.index(1, 0))))
- @with_encoding('euc-jp')
- def test_data_eucjp():
- m = newmodel(name='euc-jp-path')
- assert_equals(_aloha_ja, m.data(m.index(0, 0)))
- def test_isdir():
- m = newmodel()
- assert m.isDir(m.indexFromPath(''))
- assert m.isDir(m.indexFromPath('baz'))
- assert not m.isDir(m.indexFromPath('foo'))
- def test_rowcount():
- m = newmodel()
- assert_equals(3, m.rowCount())
- def test_rowcount_subdirs():
- m = newmodel()
- assert_equals(2, m.rowCount(m.index(0, 0)))
- def test_rowcount_invalid():
- m = newmodel()
- assert_equals(0, m.rowCount(m.index(1, 0)))
- def test_pathfromindex():
- m = newmodel()
- assert_equals('', m.filePath(QModelIndex()))
- assert_equals('bar', m.filePath(m.index(1, 0)))
- assert_equals('baz', m.filePath(m.index(0, 0)))
- assert_equals('baz/bax', m.filePath(m.index(0, 0, m.index(0, 0))))
- @with_encoding('euc-jp')
- def test_pathfromindex_eucjp():
- m = newmodel(name='euc-jp-path')
- assert_equals(_aloha_ja, m.filePath(m.index(0, 0)))
- def test_indexfrompath():
- m = newmodel()
- assert_equals(QModelIndex(), m.indexFromPath(''))
- assert_equals(m.index(1, 0), m.indexFromPath('bar'))
- assert_equals(m.index(0, 0), m.indexFromPath('baz'))
- assert_equals(m.index(0, 0, m.index(0, 0)), m.indexFromPath('baz/bax'))
- def test_indexfrompath_qstr():
- m = newmodel()
- assert_equals(m.index(1, 0), m.indexFromPath(QString('bar')))
- @with_encoding('euc-jp')
- def test_indexfrompath_eucjp():
- m = newmodel(name='euc-jp-path')
- assert_equals(m.index(0, 0), m.indexFromPath(_aloha_ja))
- def test_removed_should_be_listed():
- m = newmodel(rev=1)
- m.setStatusFilter('MARC')
- assert m.indexFromPath('baz/box').isValid()
- def test_status_role():
- m = newmodel(rev=0)
- assert_equals('A', m.data(m.indexFromPath('foo'),
- role=ManifestModel.StatusRole))
- m = newmodel(rev=1)
- m.setStatusFilter('MARC')
- assert_equals('C', m.data(m.indexFromPath('foo'),
- role=ManifestModel.StatusRole))
- assert_equals('R', m.data(m.indexFromPath('baz/box'),
- role=ManifestModel.StatusRole))
- def test_status_role_invalid():
- m = newmodel()
- assert_equals(None, m.data(QModelIndex(),
- role=ManifestModel.StatusRole))
- def test_status_filter_modified():
- m = newmodel(rev=1)
- m.setStatusFilter('M')
- assert_not_equals(QModelIndex(), m.indexFromPath('bar')) # modified
- assert_equals(QModelIndex(), m.indexFromPath('zzz')) # added
- assert_equals(QModelIndex(), m.indexFromPath('baz/box')) # removed
- assert_equals(QModelIndex(), m.indexFromPath('foo')) # clean
- def test_status_filter_added():
- m = newmodel(rev=1)
- m.setStatusFilter('A')
- assert_equals(QModelIndex(), m.indexFromPath('bar')) # modified
- assert_not_equals(QModelIndex(), m.indexFromPath('zzz')) # added
- assert_equals(QModelIndex(), m.indexFromPath('baz/box')) # removed
- assert_equals(QModelIndex(), m.indexFromPath('foo')) # clean
- def test_status_filter_removed():
- m = newmodel(rev=1)
- m.setStatusFilter('R')
- assert_equals(QModelIndex(), m.indexFromPath('bar')) # modified
- assert_equals(QModelIndex(), m.indexFromPath('zzz')) # added
- assert_not_equals(QModelIndex(), m.indexFromPath('baz/box')) # removed
- assert_equals(QModelIndex(), m.indexFromPath('foo')) # clean
- def test_status_filter_clean():
- m = newmodel(rev=1)
- m.setStatusFilter('C')
- assert_equals(QModelIndex(), m.indexFromPath('bar')) # modified
- assert_equals(QModelIndex(), m.indexFromPath('zzz')) # added
- assert_equals(QModelIndex(), m.indexFromPath('baz/box')) # removed
- assert_not_equals(QModelIndex(), m.indexFromPath('foo')) # clean
- def test_status_filter_change():
- m = newmodel(rev=1)
- m.setStatusFilter('C')
- assert_equals(QModelIndex(), m.indexFromPath('bar')) # modified
- assert_not_equals(QModelIndex(), m.indexFromPath('foo')) # clean
- m.setStatusFilter('M')
- assert_not_equals(QModelIndex(), m.indexFromPath('bar')) # modified
- assert_equals(QModelIndex(), m.indexFromPath('foo')) # clean
- def test_status_filter_multi():
- m = newmodel(rev=1)
- m.setStatusFilter('MC')
- assert_not_equals(QModelIndex(), m.indexFromPath('bar')) # modified
- assert_equals(QModelIndex(), m.indexFromPath('zzz')) # added
- assert_equals(QModelIndex(), m.indexFromPath('baz/box')) # removed
- assert_not_equals(QModelIndex(), m.indexFromPath('foo')) # clean