def test_set(): schema = List.of(Integer) el = schema() assert list(el) == [] el = schema() assert not el.set(1) assert el.value == [] el = schema() assert not el.set(None) assert el.value == [] el = schema() assert el.set(range(3)) assert el.value == [0, 1, 2] el = schema() assert el.set(xrange(3)) assert el.value == [0, 1, 2] el = schema([0, 1, 2]) assert el.value == [0, 1, 2] el = schema() el.extend([1, 2, 3]) assert el.value == [1, 2, 3] el.set([4, 5, 6]) assert el.value == [4, 5, 6] assert el.set([]) assert el.value == []
def test_set(): schema = List.of(Integer) el = schema() assert list(el) == [] el = schema() assert not el.set(1) assert el.value == [] el = schema() assert not el.set(None) assert el.value == [] el = schema() assert el.set(range(3)) assert el.value == [0, 1, 2] el = schema() assert el.set(xrange(3)) assert el.value == [0, 1, 2] el = schema([0, 1, 2]) assert el.value == [0, 1, 2] el = schema() el.extend([1, 2, 3]) assert el.value == [1, 2, 3] el.set([4, 5, 6]) assert el.value == [4, 5, 6] assert el.set([]) assert el.value == []
def test_set_flat_doubly_anonymous_dict(): pairs = ((u'0_x', u'x0'), (u'0_y', u'y0'), (u'1_x', u'x1'), (u'1_y', u'y1'), (u'2_x', u'x2'), ) schema = List.of(String.named(u'x'), String.named(u'y')) el = schema.from_flat(pairs) eq_(len(el), 3) eq_(el[0].value, dict((k[-1], v) for k, v in pairs[0:2])) eq_(el[1].value, dict((k[-1], v) for k, v in pairs[2:4])) eq_(el[2].value, {u'x': u'x2', u'y': None})
def test_corrupt_all_children(): # Ensure all_children won't spin out if the graph becomes cyclic. schema = List.of(String) el = schema() el.append(String(u'x')) el.append(String(u'y')) dupe = String(u'z') el.append(dupe) el.append(dupe) assert list(_.value for _ in el.children) == list(u'xyzz') assert list(_.value for _ in el.all_children) == list(u'xyz')
def test_corrupt_all_children(): # Ensure all_children won't spin out if the graph becomes cyclic. schema = List.of(String) el = schema() el.append(String(u'x')) el.append(String(u'y')) dupe = String(u'z') el.append(dupe) el.append(dupe) assert list(_.value for _ in el.children) == list(u'xyzz') assert list(_.value for _ in el.all_children) == list(u'xyz')
def test_raw(): schema = List.of(Integer) el = schema() assert el.raw is Unset el = schema(u'foo') assert el.raw == u'foo' el = schema([1, 2, 3]) assert el.raw == [1, 2, 3] el = schema((1, 2, 3)) assert el.raw == (1, 2, 3) el = schema({u'x': u'bar'}) assert el.raw == {u'x': u'bar'}
def test_raw(): schema = List.of(Integer) el = schema() assert el.raw is Unset el = schema(u'foo') assert el.raw == u'foo' el = schema([1, 2, 3]) assert el.raw == [1, 2, 3] el = schema((1, 2, 3)) assert el.raw == (1, 2, 3) el = schema({u'x': u'bar'}) assert el.raw == {u'x': u'bar'}
def test_element_set(): data = [] sentinel = lambda sender, adapted: data.append((sender, adapted)) schema = List.of(Integer) schema([0]) with element_set.connected_to(sentinel): schema([1]) schema([u'bogus']) assert len(data) == 4 # Integer, List, Integer, List assert data[1][0].value == [1] assert data[1][1] is True assert data[2][0].raw == u'bogus' assert data[2][1] is False assert data[3][1] is False
# XXX forces circular dependency when it is in the head import block from MoinMoin.themes import utctimestamp # TODO: Add support for timezones dt = utctimestamp(dt) return dt DateTime = (DateTimeUNIX.with_properties(widget=WIDGET_DATETIME, placeholder=_("YYYY-MM-DD HH:MM:SS (example: 2013-12-31 23:59:59)")) .validated_by(Converted(incorrect=L_("Please use the following format: YYYY-MM-DD HH:MM:SS")))) File = FileStorage.with_properties(widget=WIDGET_FILE) Hidden = String.using(optional=True).with_properties(widget=WIDGET_HIDDEN) # optional=True is needed to get rid of the "required field" indicator on the UI (usually an asterisk) ReadonlyStringList = List.of(String).using(optional=True).with_properties(widget=WIDGET_READONLY_STRING_LIST) ReadonlyItemLinkList = ReadonlyStringList.with_properties(widget=WIDGET_READONLY_ITEM_LINK_LIST) # XXX When some user chooses a Reference candidate that is removed before the # user POSTs, the validator fails. This can be confusing. class ValidReference(Validator): """ Validator for Reference """ invalid_reference_msg = L_('Invalid Reference.') def validate(self, element, state): if element.value not in element.valid_values: return self.note_error(element, state, 'invalid_reference_msg')
def test_value(): schema = List.of(String) el = schema([u'x', u'x']) eq_(el.value, [u'x', u'x'])
def test_u(): schema = List.of(String) el = schema([u'x', u'x']) eq_(el.u, u"[u'x', u'x']")
def test_set_flat_fully_anonymous(): schema = List.of(String) pairs = [(u'0', u'abc'), (u'1', u'def')] bogus = [(u'x', u'xxx')] _assert_set_flat(schema, pairs, bogus)
def test_set_flat_fully_anonymous(): schema = List.of(String) pairs = [(u'0', u'abc'), (u'1', u'def')] bogus = [(u'x', u'xxx')] _assert_set_flat(schema, pairs, bogus)
def test_set_flat_anon_list_named_child(): schema = List.of(String.named(u's')) pairs = [(u'0_s', u'abc'), (u'1_s', u'def')] bogus = [(u's', u'xxx'), (u'0', u'yyy')] _assert_set_flat(schema, pairs, bogus)
return dt DateTime = (DateTimeUNIX.with_properties( widget=WIDGET_DATETIME, placeholder=_("YYYY-MM-DD HH:MM:SS (example: 2013-12-31 23:59:59)") ).validated_by( Converted( incorrect=L_("Please use the following format: YYYY-MM-DD HH:MM:SS")))) File = FileStorage.with_properties(widget=WIDGET_FILE) Hidden = String.using(optional=True).with_properties(widget=WIDGET_HIDDEN) # optional=True is needed to get rid of the "required field" indicator on the UI (usually an asterisk) ReadonlyStringList = List.of(String).using(optional=True).with_properties( widget=WIDGET_READONLY_STRING_LIST) ReadonlyItemLinkList = ReadonlyStringList.with_properties( widget=WIDGET_READONLY_ITEM_LINK_LIST) # XXX When some user chooses a Reference candidate that is removed before the # user POSTs, the validator fails. This can be confusing. class ValidReference(Validator): """ Validator for Reference """ invalid_reference_msg = L_('Invalid Reference.') def validate(self, element, state): if element.value not in element.valid_values:
class SimpleForm1(Form): fname = String surname = String age = Integer snacks = List.of(String.named('name'))
class Bundle(Import): def adapt(self, value): return Import.adapt(self, 'glashammer.bundles.%s.setup_%s' % (value, value)) Url = Dict.of( String.named('url'), String.named('endpoint'), Import.named('view').using(optional=True), ) Urls = List.of(Url) Config = Dict.named('config').of(Dict) Settings = Dict.of(Element) TemplateSearchPaths = List.of(String) TemplateFilter = Dict.of( Import.named('filter'), String.named('name'), ) TemplateFilters = List.of(TemplateFilter) SharedPath = Dict.of(
def test_set_flat_anon_list_named_child(): schema = List.of(String.named(u's')) pairs = [(u'0_s', u'abc'), (u'1_s', u'def')] bogus = [(u's', u'xxx'), (u'0', u'yyy')] _assert_set_flat(schema, pairs, bogus)
def test_value(): schema = List.of(String) el = schema([u'x', u'x']) eq_(el.value, [u'x', u'x'])
def test_u(): schema = List.of(String) el = schema([u'x', u'x']) eq_(el.u, u"[u'x', u'x']")