File: image_test.c

package info (click to toggle)
libmediascan 0~20220401.git.34fc2d-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 7,208 kB
  • sloc: ansic: 17,054; sh: 4,228; objc: 261; perl: 225; makefile: 101
file content (81 lines) | stat: -rw-r--r-- 2,329 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <libmediascan.h>

#include "tap.h"
#include "common.h"

#define TEST_COUNT 1

static int rcount = 0;
static int done = 0;

static void my_result_callback(MediaScan *s, MediaScanResult *result, void *userdata) {
  //ms_dump_result(result);
  rcount++;
}

static void my_error_callback(MediaScan *s, MediaScanError *error, void *userdata) {
  LOG_WARN("[Error] %s (%s)\n", error->error_string, error->path);
}

static void my_progress_callback(MediaScan *s, MediaScanProgress *progress, void *userdata) {
  LOG_WARN("[Progress] %s (%s) %d/%d, ETA %d secs\n", progress->phase, progress->cur_item, progress->done, progress->total, progress->eta);

  // Do tests on final progress callback only
  if (!progress->cur_item) {
    ok(progress->total == 42, "final progress callback total is %d", progress->total);
    ok(rcount == 23, "final result callback count is %d", rcount);
  }
}

static void my_finish_callback(MediaScan *s, void *userdata) {
  done = 1;
}

int main(int argc, char *argv[])
{
  char *bin;
  char *dir;

  plan(TEST_COUNT);  
  ms_set_log_level(DEBUG);

  // Get path to this binary
  bin = _findbin(argv[0]);
  dir = _abspath(bin, "../data"); // because binary is in .libs dir
  //dir = "/Users/andy/Pictures/iPhoto Library";

  // Scan all image files
  {
    MediaScan *s = ms_create();
    ms_add_path(s, dir);    
    ms_add_ignore_extension(s, "AUDIO");
    //ms_add_ignore_extension(s, "IMAGE");
    ms_add_ignore_extension(s, "VIDEO");
    ms_add_thumbnail_spec(s, THUMB_PNG, 160, 160, 1, 0, 0);
    ms_add_thumbnail_spec(s, THUMB_JPEG, 160, 160, 1, 0, 0);
    ms_add_thumbnail_spec(s, THUMB_PNG, 41, 41, 1, 0, 0);
    ms_add_thumbnail_spec(s, THUMB_PNG, 40, 40, 1, 0, 0);
    ms_add_thumbnail_spec(s, THUMB_PNG, 100, 100, 1, 0, 0);
    ms_set_result_callback(s, my_result_callback);
    ms_set_error_callback(s, my_error_callback);
    ms_set_progress_callback(s, my_progress_callback);
    ms_set_finish_callback(s, my_finish_callback);
    ms_set_async(s, 0);
    //ms_set_cachedir(s, "/tmp/libmediascan");
    ms_set_flags(s, MS_USE_EXTENSION | MS_FULL_SCAN | MS_CLEARDB);
    ms_scan(s);

    // XXX Watch fd instead
    do {
      ms_async_process(s);
    } while (!done);

    ms_destroy(s);
  }
  
  //free(dir);
  free(bin);

  ok(1 == 1, "we got to the end");
  return exit_status();
}