| 74 | ([('a', 1), ('b', 2)], pa.map_(pa.string(), pa.int8()), pa.MapScalar), |
| 75 | ]) |
| 76 | def test_basics(value, ty, klass, pickle_module): |
| 77 | s = pa.scalar(value, type=ty) |
| 78 | s.validate() |
| 79 | s.validate(full=True) |
| 80 | assert isinstance(s, klass) |
| 81 | assert s.as_py() == value |
| 82 | assert s == pa.scalar(value, type=ty) |
| 83 | assert s != value |
| 84 | assert s != "else" |
| 85 | assert hash(s) == hash(s) |
| 86 | assert s.is_valid is True |
| 87 | assert s != None # noqa: E711 |
| 88 | |
| 89 | s = pa.scalar(None, type=s.type) |
| 90 | assert s.is_valid is False |
| 91 | assert s.as_py() is None |
| 92 | assert s != pa.scalar(value, type=ty) |
| 93 | |
| 94 | # test pickle roundtrip |
| 95 | restored = pickle_module.loads(pickle_module.dumps(s)) |
| 96 | assert s.equals(restored) |
| 97 | |
| 98 | # test that scalars are weak-referenceable |
| 99 | wr = weakref.ref(s) |
| 100 | assert wr() is not None |
| 101 | del s |
| 102 | assert wr() is None |
| 103 | |
| 104 | |
| 105 | # This test is a copy of test_basics but only for float16 (HalfFloatScalar) |