const checkForNullOrUndefined = <T>(obj: T, message: string): NonNullable<T> => {
	if (obj === null || obj === undefined) {
		throw new Error(message);
	}
	return obj;
};

const isNullOrUndefined = <T>(obj: T): boolean => {
	return obj === null || obj === undefined;
};

const equalsIgnoreCase = (input1: string, input2: string): boolean => {
	if (isNullOrUndefined(input1) && isNullOrUndefined(input2)) {
		return true;
	}

	if (isNullOrUndefined(input1) || isNullOrUndefined(input2)) {
		return false;
	}

	return input1.toUpperCase() === input2.toUpperCase();
};


const convertNumberToString = (data: string | number): string => {
	if (typeof data === 'string') {
		return data.trim();
	} else if (Math.abs(data - Math.floor(data)) < 1e-7) {
		return data.toFixed(1);
	} else {
		return data.toString();
	}
}

export { checkForNullOrUndefined, isNullOrUndefined, equalsIgnoreCase, convertNumberToString };