/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.tomcat.buildutil.translate;

import java.io.File;
import java.util.Properties;

import org.junit.Assert;
import org.junit.Test;

public class TestFixedStrings {

    @Test
    public void testManagerApps() {
        doTestStartsWith("org.apache.catalina.manager", "OK -");
        doTestStartsWith("org.apache.catalina.manager.host", "OK -");
    }


    private void doTestStartsWith(String packageName, String text) {
        File dir = new File("java/" + packageName.replace('.',  '/'));

        // English
        File fileEn = new File(dir, Constants.L10N_PREFIX + Constants.L10N_SUFFIX);
        Properties propsEn = Utils.load(fileEn);

        File[] files = dir.listFiles();
        if (files != null) {
            for (File file : files) {
                String fileName = file.getName();
                if (fileName.startsWith(Constants.L10N_PREFIX)) {
                    if (!Utils.getLanguage(fileName).equals("en")) {
                        doTestStartsFile(file, propsEn, text);
                    }
                }
            }
        }
    }


    private void doTestStartsFile(File fileTranslated, Properties propsEn, String text) {
        Properties propsTranslated = Utils.load(fileTranslated);

        for (Object key : propsEn.keySet()) {
            String value = (String) propsEn.get(key);
            if (value != null && value.startsWith(text)) {
                String valueTranslated = (String) propsTranslated.get(key);
                if (valueTranslated != null && !valueTranslated.startsWith(text)) {
                    Assert.fail(fileTranslated.getPath() + " : " + key);
                }
            }
        }
    }
}
