/*

 *******************************************************************************
 * Copyright (C) 2005, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */

package com.ibm.icu.dev.test.stringprep;

/**
 * @author limaoyu
 */
public class TestInputDataStructure {
    
    private String desc = null;

    private String namebase = null;

    private String nameutf8 = null;

    private String namezone = null;

    private String failzone1 = null;

    private String failzone2 = null;

    private String token = null;

    private String passfail = null;

    private String type = null;
    /**
     * @return Returns the desc.
     */
    public String getDesc() {
        return desc;
    }
    /**
     * @param desc The desc to set.
     */
    public void setDesc(String desc) {
        this.desc = desc;
    }
    /**
     * @return Returns the failzone1.
     */
    public String getFailzone1() {
        return failzone1;
    }
    /**
     * @param failzone1 The failzone1 to set.
     */
    public void setFailzone1(String failzone1) {
        this.failzone1 = failzone1;
    }
    /**
     * @return Returns the failzone2.
     */
    public String getFailzone2() {
        return failzone2;
    }
    /**
     * @param failzone2 The failzone2 to set.
     */
    public void setFailzone2(String failzone2) {
        this.failzone2 = failzone2;
    }
    /**
     * @return Returns the namebase.
     */
    public String getNamebase() {
        return namebase;
    }
    /**
     * @param namebase The namebase to set.
     */
    public void setNamebase(String namebase) {
        this.namebase = namebase;
    }
    /**
     * @return Returns the nameutf8.
     */
    public String getNameutf8() {
        return nameutf8;
    }
    /**
     * @param nameutf8 The nameutf8 to set.
     */
    public void setNameutf8(String nameutf8) {
        this.nameutf8 = nameutf8;
    }
    /**
     * @return Returns the namezone.
     */
    public String getNamezone() {
        return namezone;
    }
    /**
     * @param namezone The namezone to set.
     */
    public void setNamezone(String namezone) {
        this.namezone = namezone;
    }
    /**
     * @return Returns the passfail.
     */
    public String getPassfail() {
        return passfail;
    }
    /**
     * @param passfail The passfail to set.
     */
    public void setPassfail(String passfail) {
        this.passfail = passfail;
    }
    /**
     * @return Returns the token.
     */
    public String getToken() {
        return token;
    }
    /**
     * @param token The token to set.
     */
    public void setToken(String token) {
        this.token = token;
    }
    /**
     * @return Returns the type.
     */
    public String getType() {
        return type;
    }
    /**
     * @param type The type to set.
     */
    public void setType(String type) {
        this.type = type;
    }
}