| test(
  'Atomic Test: styles.StyleConversionsTest',
  [
    'ephox.agar.api.RawAssertions',
    'tinymce.themes.mobile.util.StyleConversions'
  ],
  function (RawAssertions, StyleConversions) {
    var check = function (label, expected, input) {
      var output = StyleConversions.expand(input);
      RawAssertions.assertEq('StyleConversions.expand (' + label + ')', expected, output);
    };
    check(
      'Empty input',
      {
        menus: { },
        expansions: { },
        items: [ ]
      },
      [ ]
    );
    check(
      'Input with one flat item',
      {
        menus: { },
        expansions: { },
        items: [
          { title: 'alpha' }
        ]
      },
      [
        { title: 'alpha' }
      ]
    );
    check(
      'Input with three flat items',
      {
        menus: { },
        expansions: { },
        items: [
          { title: 'alpha' },
          { title: 'beta' },
          { title: 'gamma' }
        ]
      },
      [
        { title: 'alpha' },
        { title: 'beta' },
        { title: 'gamma' }
      ]
    );
    check(
      'Input with three items, and an empty menu in the middle',
      {
        menus: {
          'beta': [ ]
        },
        expansions: {
          'beta': 'beta'
        },
        items: [
          { title: 'alpha' },
          { title: 'beta', menu: true },
          { title: 'gamma' }
        ]
      },
      [
        { title: 'alpha' },
        {
          title: 'beta',
          items: [ ]
        },
        { title: 'gamma' }
      ]
    );
    check(
      'Input with three items, and a menu with a single item in the middle',
      {
        menus: {
          'beta': [
            { title: 'beta-1' }
          ]
        },
        expansions: {
          'beta': 'beta'
        },
        items: [
          { title: 'alpha' },
          { title: 'beta', menu: true },
          { title: 'gamma' }
        ]
      },
      [
        { title: 'alpha' },
        {
          title: 'beta',
          items: [
            { title: 'beta-1' }
          ]
        },
        { title: 'gamma' }
      ]
    );
    check(
      'Input with three items, and a menu with three items in the middle',
      {
        menus: {
          'beta': [
            { title: 'beta-1' },
            { title: 'beta-2' },
            { title: 'beta-3' }
          ]
        },
        expansions: {
          'beta': 'beta'
        },
        items: [
          { title: 'alpha' },
          { title: 'beta', menu: true },
          { title: 'gamma' }
        ]
      },
      [
        { title: 'alpha' },
        {
          title: 'beta',
          items: [
            { title: 'beta-1' },
            { title: 'beta-2' },
            { title: 'beta-3' }
          ]
        },
        { title: 'gamma' }
      ]
    );
    check(
      'Input with three items, and a menu (beta) with three items (beta1,2,3) in the middle' +
      ', with last subitem having a menu with no items (beta-3)',
      {
        menus: {
          'beta': [
            { title: 'beta-1' },
            { title: 'beta-2' },
            { title: 'beta-3', menu: true }
          ],
          'beta-3': [ ]
        },
        expansions: {
          'beta': 'beta',
          'beta-3': 'beta-3'
        },
        items: [
          { title: 'alpha' },
          { title: 'beta', menu: true },
          { title: 'gamma' }
        ]
      },
      [
        { title: 'alpha' },
        {
          title: 'beta',
          items: [
            { title: 'beta-1' },
            { title: 'beta-2' },
            {
              title: 'beta-3',
              items: [ ]
            }
          ]
        },
        { title: 'gamma' }
      ]
    );
    check(
      'Input with three items, and a menu with three items (beta-1,2,3) in the middle' +
      ', with last subitem having a menu with two items (beta-3-1,2) items, and that first item' +
      ' having one item (beta-3-1-1)',
      {
        menus: {
          'beta': [
            { title: 'beta-1' },
            { title: 'beta-2' },
            { title: 'beta-3', menu: true }
          ],
          'beta-3': [
            { title: 'beta-3-1', menu: true },
            { title: 'beta-3-2' }
          ],
          'beta-3-1': [
            { title: 'beta-3-1-1' }
          ]
        },
        expansions: {
          'beta': 'beta',
          'beta-3': 'beta-3',
          'beta-3-1': 'beta-3-1'
        },
        items: [
          { title: 'alpha' },
          { title: 'beta', menu: true },
          { title: 'gamma' }
        ]
      },
      [
        { title: 'alpha' },
        {
          title: 'beta',
          items: [
            { title: 'beta-1' },
            { title: 'beta-2' },
            {
              title: 'beta-3',
              items: [
                {
                  title: 'beta-3-1',
                  items: [
                    { title: 'beta-3-1-1' }
                  ]
                },
                { title: 'beta-3-2' }
              ]
            }
          ]
        },
        { title: 'gamma' }
      ]
    );
  }
);
 |