// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.mappaint
import java.awt.Color

import org.junit.*
import org.openstreetmap.josm.JOSMFixture
import org.openstreetmap.josm.gui.mappaint.LabelCompositionStrategy.DeriveLabelFromNameTagsCompositionStrategy
import org.openstreetmap.josm.gui.mappaint.LabelCompositionStrategy.TagLookupCompositionStrategy
import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.TagKeyReference

class MapCSSWithExtendedTextDirectivesTest {

    @BeforeClass
    public static void createJOSMFixture(){
        JOSMFixture.createUnitTestFixture().init()
    }

    @Test
    public void createAutoTextElement() {
        Cascade c = new Cascade()
        c.put("text", new Keyword("auto"))

        TextElement te = TextElement.create(c, Color.WHITE, false /* no default annotate */)
        assert te.labelCompositionStrategy != null
        assert te.labelCompositionStrategy instanceof DeriveLabelFromNameTagsCompositionStrategy
    }

    @Test
    public void createTextElementComposingTextFromTag() {
        Cascade c = new Cascade()
        c.put("text", new TagKeyReference("my_name"))

        TextElement te = TextElement.create(c, Color.WHITE, false /* no default annotate */)
        assert te.labelCompositionStrategy != null
        assert te.labelCompositionStrategy instanceof TagLookupCompositionStrategy
        assert te.labelCompositionStrategy.getDefaultLabelTag() == "my_name"
    }

    @Test
    public void createNullStrategy() {
        Cascade c = new Cascade()

        TextElement te = TextElement.create(c, Color.WHITE, false /* no default annotate */)
        assert te == null
    }
}
