1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef TESTS_NACL_IO_TEST_MOCK_UTIL_H_
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define TESTS_NACL_IO_TEST_MOCK_UTIL_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <gmock/gmock.h>
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <ppapi/c/pp_completion_callback.h>
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <ppapi/c/pp_var.h>
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ACTION_TEMPLATE(CallCallback,
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                HAS_1_TEMPLATE_PARAMS(int, k),
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                AND_1_VALUE_PARAMS(result)) {
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PP_CompletionCallback callback = std::tr1::get<k>(args);
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (callback.func) {
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    (*callback.func)(callback.user_data, result);
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MATCHER_P(IsEqualToVar, var, "") {
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (arg.type != var.type)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return false;
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  switch (arg.type) {
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    case PP_VARTYPE_BOOL:
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      return arg.value.as_bool == var.value.as_bool;
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    case PP_VARTYPE_INT32:
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      return arg.value.as_int == var.value.as_int;
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    case PP_VARTYPE_DOUBLE:
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      return arg.value.as_double == var.value.as_double;
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    case PP_VARTYPE_STRING:
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      return arg.value.as_id == var.value.as_id;
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    case PP_VARTYPE_UNDEFINED:
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    case PP_VARTYPE_NULL:
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      return true;
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    case PP_VARTYPE_ARRAY:
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    case PP_VARTYPE_ARRAY_BUFFER:
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    case PP_VARTYPE_DICTIONARY:
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    case PP_VARTYPE_OBJECT:
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    default:
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      // Not supported.
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      return false;
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // TESTS_NACL_IO_TEST_MOCK_UTIL_H_
53