private function doTestComplexDependencyOrdering($format)
    {
        dbsteward::set_sql_format($format);
        $xml = <<<XML
<dbsteward>
  <schema name="s1">
    <view name="v1" dependsOnViews="v2,v4" />
    <view name="v2" dependsOnViews="v3,v5" />
    <view name="v3" />
    <view name="v4" dependsOnViews="v5,s2.v3" />
    <view name="v5" />
  </schema>
  <schema name="s2">
    <view name="v1" />
    <view name="v2" dependsOnViews="v3,v4,v5" />
    <view name="v3" />
    <view name="v4" dependsOnViews="s1.v5" />
    <view name="v5" />
  </schema>
</dbsteward>
XML;
        $doc = simplexml_load_string($xml);
        // does an in-order search, so we should see all children, as declared in order, before the parents
        $expected = array('s1.v3', 's1.v5', 's1.v2', 's2.v3', 's1.v4', 's1.v1', 's2.v1', 's2.v4', 's2.v5', 's2.v2');
        $actual = array();
        format_diff_views::with_views_in_order($doc, function ($schema, $view) use(&$actual) {
            $actual[] = $schema['name'] . '.' . $view['name'];
        });
        $this->assertEquals($expected, $actual);
    }