HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/anaconda3/Lib/site-packages/astropy/nddata/tests/test_flag_collection.py
# Licensed under a 3-clause BSD style license - see LICENSE.rst


import numpy as np
import pytest

from astropy.nddata import FlagCollection


def test_init():
    FlagCollection(shape=(1, 2, 3))


def test_init_noshape():
    with pytest.raises(Exception) as exc:
        FlagCollection()
    assert (
        exc.value.args[0]
        == "FlagCollection should be initialized with the shape of the data"
    )


def test_init_notiterable():
    with pytest.raises(Exception) as exc:
        FlagCollection(shape=1.0)
    assert exc.value.args[0] == "FlagCollection shape should be an iterable object"


def test_setitem():
    f = FlagCollection(shape=(1, 2, 3))
    f["a"] = np.ones((1, 2, 3)).astype(float)
    f["b"] = np.ones((1, 2, 3)).astype(int)
    f["c"] = np.ones((1, 2, 3)).astype(bool)
    f["d"] = np.ones((1, 2, 3)).astype(str)


@pytest.mark.parametrize("value", [1, 1.0, "spam", [1, 2, 3], (1.0, 2.0, 3.0)])
def test_setitem_invalid_type(value):
    f = FlagCollection(shape=(1, 2, 3))
    with pytest.raises(Exception) as exc:
        f["a"] = value
    assert exc.value.args[0] == "flags should be given as a Numpy array"


def test_setitem_invalid_shape():
    f = FlagCollection(shape=(1, 2, 3))
    with pytest.raises(ValueError) as exc:
        f["a"] = np.ones((3, 2, 1))
    assert exc.value.args[0].startswith("flags array shape")
    assert exc.value.args[0].endswith("does not match data shape (1, 2, 3)")