// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`default props can set default required boolean values 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`default props can set default values 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`default props default values are also set whenever component is updated 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['state'].p}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate a prop with multiple types 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate a prop with multiple types 2`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate an array with given primitive type 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate an array with given primitive type 2`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate an array with multiple sub element types 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate an array with multiple sub element types 2`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate an array with multiple sub element types 3`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate an object with simple shape 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate an optional props 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate an optional props 2`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate recursively complicated prop def 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation can validate recursively complicated prop def 2`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation default values are applied before validating props at update 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['state'].p}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation props are validated in dev mode (code snapshot) 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {message: 1}
    helpers.validateProps(\`Child\`, props2, ctx)
    let b2 = component(\`Child\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation props are validated whenever component is updated 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['state'].p}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types 2`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types 3`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types 4`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types 5`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types 6`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types, alternate form 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types, alternate form 2`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types, alternate form 3`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types, alternate form 4`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types, alternate form 5`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validate simple types, alternate form 6`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    const props2 = {p: ctx['p']}
    helpers.validateProps(\`SubComp\`, props2, ctx)
    let b2 = component(\`SubComp\`, props2, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;

exports[`props validation validation is only done in dev mode 1`] = `
"function anonymous(bdom, helpers
) {
  let { text, createBlock, list, multi, html, toggler, component } = bdom;
  let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
  
  let block1 = createBlock(\`<div><block-child-0/></div>\`);
  
  return function template(ctx, node, key = \\"\\") {
    let b2 = component(\`SubComp\`, {}, key + \`__1\`, node, ctx);
    return block1([], [b2]);
  }
}"
`;
