# Path: cotede/qctests/stuck_value.py
# class StuckValue(QCCheckVar):
#     def test(self):
#         self.flags = {}
# 
#         x = ma.compressed(self.data[self.varname])
#         flag = np.zeros(self.data[self.varname].shape, dtype='i1')
#         if (x.size > 1) and (np.allclose(x, np.ones_like(x) * x[0])):
#             flag[:] = self.flag_bad
#         else:
#             flag[:] = self.flag_good
#         flag[ma.getmaskarray(self.data[self.varname])] = 9
#         self.flags['stuck_value'] = flag
# 
# Path: tests/data.py
# class DummyData(object):
#     def __init__(self):
#         self.attrs = {
#                 'datetime': datetime(2016,6,4),
#                 'LATITUDE': 15, 'LONGITUDE': -38}
#         self.data = {
#                 'PRES': ma.fix_invalid(
#                     [2, 6, 10, 21, 44, 79, 100, 150,
#                         200, 400, 410, 650, 1000, 2000, 5000]),
#                 'TEMP': ma.fix_invalid(
#                     [25.32, 25.34, 25.34, 25.31, 24.99, 23.46, 21.85, 17.95,
#                         15.39, 11.08, 6.93, 7.93, 5.71, 3.58, np.nan]),
#                 'PSAL': ma.fix_invalid(
#                     [36.49, 36.51, 36.52, 36.53, 36.59, 36.76, 36.81, 36.39,
#                         35.98, 35.30, 35.28, 34.93, 34.86, np.nan, np.nan])}
# 
#     def __getitem__(self, key):
#         return self.data[key]
# 
#     def keys(self):
#         return self.data.keys()
# 
#     @property
#     def attributes(self):
#         print('attributes will be removed. Use attrs instead!')
#         return self.attrs


import numpy as np
from numpy import ma
from cotede.qctests import StuckValue
from ..data import DummyData
# -*- coding: utf-8 -*-
# Licensed under a 3-clause BSD style license - see LICENSE.rst

"""
"""




def test_default():
    profile = DummyData()
    cfg = {'flag_good': 1, 'flag_bad': 4}
    y = StuckValue(profile, 'TEMP', cfg)

    assert type(y.features) is dict
    idx = ma.getmaskarray(profile['TEMP'])
    assert (y.flags['stuck_value'][idx] == 9).all()
    assert (y.flags['stuck_value'][~idx] == 1).all()

def test_constant():
    profile = DummyData()
    profile['TEMP'][:] = profile['TEMP'] * 0 + 3.14
    cfg = {'flag_good': 1, 'flag_bad': 4}

# Path: cotede/qctests/stuck_value.py
# class StuckValue(QCCheckVar):
#     def test(self):
#         self.flags = {}
# 
#         x = ma.compressed(self.data[self.varname])
#         flag = np.zeros(self.data[self.varname].shape, dtype='i1')
#         if (x.size > 1) and (np.allclose(x, np.ones_like(x) * x[0])):
#             flag[:] = self.flag_bad
#         else:
#             flag[:] = self.flag_good
#         flag[ma.getmaskarray(self.data[self.varname])] = 9
#         self.flags['stuck_value'] = flag
# 
# Path: tests/data.py
# class DummyData(object):
#     def __init__(self):
#         self.attrs = {
#                 'datetime': datetime(2016,6,4),
#                 'LATITUDE': 15, 'LONGITUDE': -38}
#         self.data = {
#                 'PRES': ma.fix_invalid(
#                     [2, 6, 10, 21, 44, 79, 100, 150,
#                         200, 400, 410, 650, 1000, 2000, 5000]),
#                 'TEMP': ma.fix_invalid(
#                     [25.32, 25.34, 25.34, 25.31, 24.99, 23.46, 21.85, 17.95,
#                         15.39, 11.08, 6.93, 7.93, 5.71, 3.58, np.nan]),
#                 'PSAL': ma.fix_invalid(
#                     [36.49, 36.51, 36.52, 36.53, 36.59, 36.76, 36.81, 36.39,
#                         35.98, 35.30, 35.28, 34.93, 34.86, np.nan, np.nan])}
# 
#     def __getitem__(self, key):
#         return self.data[key]
# 
#     def keys(self):
#         return self.data.keys()
# 
#     @property
#     def attributes(self):
#         print('attributes will be removed. Use attrs instead!')
#         return self.attrs


# Path: tests/qctests/test_qc_stuck_value.py
import numpy as np
from numpy import ma
from cotede.qctests import StuckValue
from ..data import DummyData

# -*- coding: utf-8 -*-
# Licensed under a 3-clause BSD style license - see LICENSE.rst

"""
"""




def test_default():
    profile = DummyData()
    cfg = {'flag_good': 1, 'flag_bad': 4}
    y = StuckValue(profile, 'TEMP', cfg)

    assert type(y.features) is dict
    idx = ma.getmaskarray(profile['TEMP'])
    assert (y.flags['stuck_value'][idx] == 9).all()
    assert (y.flags['stuck_value'][~idx] == 1).all()

def test_constant():
    profile = DummyData()
    profile['TEMP'][:] = profile['TEMP'] * 0 + 3.14
    cfg = {'flag_good': 1, 'flag_bad': 4}

    y = StuckValue(profile, 'TEMP', cfg)