TEST_F(TreeScopeStyleSheetCollectionTest, CompareStyleSheetsPrepend)
{
    CSSStyleSheet* sheet1 = createSheet();
    CSSStyleSheet* sheet2 = createSheet();

    ContentsVector added;
    SheetVector previous;
    SheetVector current;

    previous.append(sheet2);

    current.append(sheet1);
    current.append(sheet2);

    added.append(sheet1->contents());

    compareStyleSheets(previous, current, added, Reconstruct);
}
TEST_F(TreeScopeStyleSheetCollectionTest, CompareStyleSheetsAppend)
{
    RawPtr<CSSStyleSheet> sheet1 = createSheet();
    RawPtr<CSSStyleSheet> sheet2 = createSheet();

    ContentsVector added;
    SheetVector previous;
    SheetVector current;

    previous.append(sheet1);

    current.append(sheet1);
    current.append(sheet2);

    added.append(sheet2->contents());

    compareStyleSheets(previous, current, added, Additive);
}
TEST_F(TreeScopeStyleSheetCollectionTest, CompareStyleSheetsInsertRemove)
{
    CSSStyleSheet* sheet1 = createSheet();
    CSSStyleSheet* sheet2 = createSheet();
    CSSStyleSheet* sheet3 = createSheet();

    ContentsVector added;
    SheetVector previous;
    SheetVector current;

    previous.append(sheet1);
    previous.append(sheet2);

    current.append(sheet2);
    current.append(sheet3);

    // TODO([email protected]): This is clearly wrong. We add sheet3 and remove sheet1 and
    // compareStyleSheets returns sheet2 and sheet3 as added (crbug/475858).
    added.append(sheet2->contents());
    added.append(sheet3->contents());

    compareStyleSheets(previous, current, added, Reconstruct);
}
TEST_F(TreeScopeStyleSheetCollectionTest, CompareStyleSheetsRemove)
{
    CSSStyleSheet* sheet1 = createSheet();
    CSSStyleSheet* sheet2 = createSheet();
    CSSStyleSheet* sheet3 = createSheet();

    ContentsVector added;
    SheetVector previous;
    SheetVector current;

    previous.append(sheet1);
    previous.append(sheet2);
    previous.append(sheet3);

    current.append(sheet1);
    current.append(sheet3);

    added.append(sheet2->contents());

    // This is really the same as Insert. TreeScopeStyleSheetCollection::compareStyleSheets
    // will assert if you pass an array that is longer as the first parameter.
    compareStyleSheets(current, previous, added, Reconstruct);
}