def METHOD_NAME(self):
    model = BDF(debug=False)
    card_count = {'SPOINT': 2,}
    model = BDF(debug=False)
    model.allocate(card_count)
    spoints = model.spoint
    data1 = BDFCard(['SPOINT', 1, 2])
    data2 = BDFCard(['SPOINT', 4, 5])
    data3 = BDFCard(['SPOINT', 10, 20])
    data4 = BDFCard(['SPOINT', 30, 'THRU', 40])
    spoints.add(data1)
    spoints.add(data2)
    f = StringIO()
    spoints.write_card(f, size=8)
    #print('spoints %s' % f.getvalue())
    self.assertEqual(len(spoints), 4)
    self.assertEqual(spoints.n, 4)
    spoints.add(data3)
    f = StringIO()
    spoints.write_card(f, size=8)
    #print('spoints %s' % f.getvalue())
    self.assertEqual(len(spoints), 6)
    self.assertEqual(spoints.n, 6)
    spoints.add(data4)
    f = StringIO()
    spoints.write_card(f, size=16)
    #print('spoints %s' % f.getvalue())
    self.assertEqual(len(spoints), 17)
    self.assertEqual(spoints.n, 17)
    spoints.add(data4)
    f = StringIO()
    spoints.write_card(f, size=16)
    #print('spoints %s' % f.getvalue())
    self.assertEqual(spoints.max(), 40)
    self.assertEqual(spoints.min(), 1)
    self.assertEqual(spoints.n, 17)
    if 1 in spoints:
        pass
    else:
        raise RuntimeError('invalid catch')
    if 29 in spoints:
        raise RuntimeError('invalid catch')
    data5 = BDFCard(['SPOINT', 50, 'THRU', 55, 59, '61', 'THRU', '64'])
    spoints.add(data5)
    f = StringIO()
    spoints.write_card(f, size=16)
    #print('spoints %s' % f.getvalue())
    self.assertEqual(spoints.max(), 64)
    self.assertEqual(spoints.min(), 1)
    self.assertEqual(spoints.n, 28)
    spoints.remove([1, 2, 64])
    #self.assertRaises(KeyError, spoints.remove([1, 2]))
    f = StringIO()
    spoints.write_card(f, size=16)
    #print('spoints %s' % f.getvalue())
    self.assertEqual(spoints.n, 25)
    #self.assertRaises(KeyError, spoints.remove([64]))