You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.7 KiB
141 lines
4.7 KiB
4 months ago
|
// © 2016 and later: Unicode, Inc. and others.
|
||
|
// License & terms of use: http://www.unicode.org/copyright.html
|
||
|
/********************************************************************
|
||
|
* COPYRIGHT:
|
||
|
* Copyright (c) 2002-2006, International Business Machines Corporation and
|
||
|
* others. All Rights Reserved.
|
||
|
********************************************************************/
|
||
|
|
||
|
/* Created by weiv 05/09/2002 */
|
||
|
|
||
|
#ifndef U_TESTFW_DATAMAP
|
||
|
#define U_TESTFW_DATAMAP
|
||
|
|
||
|
#include "unicode/resbund.h"
|
||
|
#include "unicode/testtype.h"
|
||
|
|
||
|
|
||
|
|
||
|
U_NAMESPACE_BEGIN
|
||
|
class Hashtable;
|
||
|
U_NAMESPACE_END
|
||
|
|
||
|
/** Holder of test data and settings. Allows addressing of items by name.
|
||
|
* For test cases, names are defined in the "Headers" section. For settings
|
||
|
* and info data, names are keys in data. Currently, we return scalar strings
|
||
|
* and integers and arrays of strings and integers. Arrays should be deposited
|
||
|
* of by the user.
|
||
|
*/
|
||
|
class T_CTEST_EXPORT_API DataMap {
|
||
|
public:
|
||
|
virtual ~DataMap();
|
||
|
|
||
|
protected:
|
||
|
DataMap();
|
||
|
int32_t utoi(const UnicodeString &s) const;
|
||
|
|
||
|
|
||
|
public:
|
||
|
/** get the string from the DataMap. Addressed by name
|
||
|
* @param key name of the data field.
|
||
|
* @return a string containing the data
|
||
|
*/
|
||
|
virtual const UnicodeString getString(const char* key, UErrorCode &status) const = 0;
|
||
|
|
||
|
/** get the string from the DataMap. Addressed by name
|
||
|
* parses a bundle string into an integer
|
||
|
* @param key name of the data field.
|
||
|
* @return an integer containing the data
|
||
|
*/
|
||
|
virtual int32_t getInt(const char* key, UErrorCode &status) const = 0;
|
||
|
|
||
|
/**
|
||
|
* Get a signed integer without runtime parsing.
|
||
|
* @param key name of the data field.
|
||
|
* @param status UErrorCode in/out parameter
|
||
|
* @return the integer
|
||
|
*/
|
||
|
virtual int32_t getInt28(const char* key, UErrorCode &status) const = 0;
|
||
|
|
||
|
/**
|
||
|
* Get an unsigned integer without runtime parsing.
|
||
|
* @param key name of the data field.
|
||
|
* @param status UErrorCode in/out parameter
|
||
|
* @return the integer
|
||
|
*/
|
||
|
virtual uint32_t getUInt28(const char* key, UErrorCode &status) const = 0;
|
||
|
|
||
|
/**
|
||
|
* Get a vector of integers without runtime parsing.
|
||
|
* @param length output parameter for the length of the vector
|
||
|
* @param key name of the data field.
|
||
|
* @param status UErrorCode in/out parameter
|
||
|
* @return the integer vector, do not delete
|
||
|
*/
|
||
|
virtual const int32_t *getIntVector(int32_t &length, const char *key, UErrorCode &status) const = 0;
|
||
|
|
||
|
/**
|
||
|
* Get binary data without runtime parsing.
|
||
|
* @param length output parameter for the length of the data
|
||
|
* @param key name of the data field.
|
||
|
* @param status UErrorCode in/out parameter
|
||
|
* @return the binary data, do not delete
|
||
|
*/
|
||
|
virtual const uint8_t *getBinary(int32_t &length, const char *key, UErrorCode &status) const = 0;
|
||
|
|
||
|
/** get an array of strings from the DataMap. Addressed by name.
|
||
|
* The user must dispose of it after usage, using delete.
|
||
|
* @param key name of the data field.
|
||
|
* @return a string array containing the data
|
||
|
*/
|
||
|
virtual const UnicodeString* getStringArray(int32_t& count, const char* key, UErrorCode &status) const = 0;
|
||
|
|
||
|
/** get an array of integers from the DataMap. Addressed by name.
|
||
|
* The user must dispose of it after usage, using delete.
|
||
|
* @param key name of the data field.
|
||
|
* @return an integer array containing the data
|
||
|
*/
|
||
|
virtual const int32_t* getIntArray(int32_t& count, const char* key, UErrorCode &status) const = 0;
|
||
|
|
||
|
// ... etc ...
|
||
|
};
|
||
|
|
||
|
// This one is already concrete - it is going to be instantiated from
|
||
|
// concrete data by TestData children...
|
||
|
class T_CTEST_EXPORT_API RBDataMap : public DataMap{
|
||
|
private:
|
||
|
Hashtable *fData;
|
||
|
|
||
|
public:
|
||
|
virtual ~RBDataMap();
|
||
|
|
||
|
public:
|
||
|
RBDataMap();
|
||
|
|
||
|
RBDataMap(UResourceBundle *data, UErrorCode &status);
|
||
|
RBDataMap(UResourceBundle *headers, UResourceBundle *data, UErrorCode &status);
|
||
|
|
||
|
public:
|
||
|
void init(UResourceBundle *data, UErrorCode &status);
|
||
|
void init(UResourceBundle *headers, UResourceBundle *data, UErrorCode &status);
|
||
|
|
||
|
virtual const ResourceBundle *getItem(const char* key, UErrorCode &status) const;
|
||
|
|
||
|
virtual const UnicodeString getString(const char* key, UErrorCode &status) const;
|
||
|
virtual int32_t getInt28(const char* key, UErrorCode &status) const;
|
||
|
virtual uint32_t getUInt28(const char* key, UErrorCode &status) const;
|
||
|
virtual const int32_t *getIntVector(int32_t &length, const char *key, UErrorCode &status) const;
|
||
|
virtual const uint8_t *getBinary(int32_t &length, const char *key, UErrorCode &status) const;
|
||
|
|
||
|
virtual int32_t getInt(const char* key, UErrorCode &status) const;
|
||
|
|
||
|
virtual const UnicodeString* getStringArray(int32_t& count, const char* key, UErrorCode &status) const;
|
||
|
virtual const int32_t* getIntArray(int32_t& count, const char* key, UErrorCode &status) const;
|
||
|
|
||
|
// ... etc ...
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|
||
|
|