#include
#include
#if defined(_MSC_VER) || defined(__WATCOMC__)
#include
#else
#include
#endif
#include "../src/common.h"
#include "../src/md5.h"
#define TMP_FILE ".test"
#define TEST_FUNC(x) int _test_func_##x(void)
#undef TEST
#define TEST(x) TEST_FUNC(x) {
#define END_TEST \
return 0; }
#if defined(_WIN32) || defined(__riscos__)
/* exit() prevents the failure message from being printed! */
#define FAIL_MSG "**fail**\n"
#else
#define FAIL_MSG
#endif
#define fail_unless(x, y) do { \
if (!(x)) { printf("at %s:%d: %s: " FAIL_MSG, __FILE__, __LINE__, y); exit(1); } \
} while (0)
static inline int is_big_endian() {
uint16 w = 0x00ff;
return (*(char *)&w == 0x00);
}
static inline double libxmp_round(double val)
{
return (val >= 0.0)? floor(val + 0.5) : ceil(val - 0.5);
}
/* Get period from note */
static inline int note_to_period(int n)
{
return (int)libxmp_round (13696.0 / pow(2, (double)n / 12));
}
#define PERIOD ((int)libxmp_round(1.0 * info.channel_info[0].period / 4096))
enum playback_action
{
PLAY_END,
PLAY_FRAMES,
};
struct playback_sequence
{
enum playback_action action;
int value;
int result;
};
int map_channel(struct player_data *, int);
int play_frame(struct context_data *);
int compare_module(struct xmp_module *, FILE *);
void dump_module(struct xmp_module *, FILE *);
void compare_playback(const char *, const struct playback_sequence *, int, int, int);
int compare_md5(const unsigned char *, const char *);
int check_md5(const char *, const char *);
int check_randomness(int *, int, double);
void read_file_to_memory(const char *, void **, long *);
void compare_mixer_data(const char *, const char *);
void compare_mixer_data_loops(const char *, const char *, int);
void compare_mixer_data_no_rv(const char *, const char *);
void convert_endian(unsigned char *, int);
void create_simple_module(struct context_data *, int, int);
void set_order(struct context_data *, int, int);
void set_instrument_volume(struct context_data *, int, int, int);
void set_instrument_nna(struct context_data *, int, int, int, int, int);
void set_instrument_envelope(struct context_data *, int, int, int, int);
void set_instrument_envelope_sus(struct context_data *, int, int);
void set_instrument_fadeout(struct context_data *, int, int);
void set_period_type(struct context_data *, int);
void set_quirk(struct context_data *, int, int);
void reset_quirk(struct context_data *, int);
void new_event(struct context_data *, int, int, int, int, int, int, int, int, int, int);
#define declare_test(x) TEST_FUNC(x)
#include "all_tests.c"
#undef declare_test