forked from mindspore-Ecosystem/mindspore
712 lines
19 KiB
Python
712 lines
19 KiB
Python
# Copyright 2020-2022 Huawei Technologies Co., Ltd
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
# ============================================================================
|
|
""" test enumerate"""
|
|
import numpy as np
|
|
import pytest
|
|
import mindspore.nn as nn
|
|
from mindspore.nn import Cell
|
|
from mindspore.ops import composite as C
|
|
from mindspore.ops import operations as P
|
|
from mindspore import Tensor, ms_function
|
|
from mindspore import context
|
|
|
|
|
|
def test_list_index_1d():
|
|
"""
|
|
Feature: List index assign
|
|
Description: Test list assign in pynative mode
|
|
Expectation: No exception.
|
|
"""
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
class Net(nn.Cell):
|
|
def construct(self):
|
|
list_ = [[1], [2, 2], [3, 3, 3]]
|
|
list_[0] = [100]
|
|
return list_
|
|
|
|
net = Net()
|
|
out = net()
|
|
assert list(out[0]) == [100]
|
|
assert list(out[1]) == [2, 2]
|
|
assert list(out[2]) == [3, 3, 3]
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
net = Net()
|
|
out = net()
|
|
assert list(out[0]) == [100]
|
|
assert list(out[1]) == [2, 2]
|
|
assert list(out[2]) == [3, 3, 3]
|
|
|
|
|
|
|
|
def test_list_neg_index_1d():
|
|
"""
|
|
Feature: List index assign
|
|
Description: Test list assign in pynative mode
|
|
Expectation: No exception.
|
|
"""
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
class Net(nn.Cell):
|
|
def construct(self):
|
|
list_ = [[1], [2, 2], [3, 3, 3]]
|
|
list_[-3] = [100]
|
|
return list_
|
|
|
|
net = Net()
|
|
out = net()
|
|
assert list(out[0]) == [100]
|
|
assert list(out[1]) == [2, 2]
|
|
assert list(out[2]) == [3, 3, 3]
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
out = net()
|
|
assert list(out[0]) == [100]
|
|
assert list(out[1]) == [2, 2]
|
|
assert list(out[2]) == [3, 3, 3]
|
|
|
|
|
|
def test_list_index_2d():
|
|
"""
|
|
Feature: List index assign
|
|
Description: Test list assign in pynative mode
|
|
Expectation: No exception.
|
|
"""
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
class Net(nn.Cell):
|
|
def construct(self):
|
|
list_ = [[1], [2, 2], [3, 3, 3]]
|
|
list_[1][0] = 200
|
|
list_[1][1] = 201
|
|
return list_
|
|
|
|
net = Net()
|
|
out = net()
|
|
assert list(out[0]) == [1]
|
|
assert list(out[1]) == [200, 201]
|
|
assert list(out[2]) == [3, 3, 3]
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
out = net()
|
|
assert list(out[0]) == [1]
|
|
assert list(out[1]) == [200, 201]
|
|
assert list(out[2]) == [3, 3, 3]
|
|
|
|
|
|
def test_list_neg_index_2d():
|
|
"""
|
|
Feature: List index assign
|
|
Description: Test list assign in pynative mode
|
|
Expectation: No exception.
|
|
"""
|
|
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
class Net(nn.Cell):
|
|
def construct(self):
|
|
list_ = [[1], [2, 2], [3, 3, 3]]
|
|
list_[1][-2] = 20
|
|
list_[1][-1] = 21
|
|
return list_
|
|
|
|
net = Net()
|
|
out = net()
|
|
assert list(out[0]) == [1]
|
|
assert list(out[1]) == [20, 21]
|
|
assert list(out[2]) == [3, 3, 3]
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
out = net()
|
|
assert list(out[0]) == [1]
|
|
assert list(out[1]) == [20, 21]
|
|
assert list(out[2]) == [3, 3, 3]
|
|
|
|
|
|
def test_list_index_3d():
|
|
"""
|
|
Feature: List index assign
|
|
Description: Test list assign in pynative mode
|
|
Expectation: No exception.
|
|
"""
|
|
|
|
class Net(nn.Cell):
|
|
def construct(self):
|
|
list_ = [[1], [2, 2], [[3, 3, 3]]]
|
|
list_[2][0][0] = 300
|
|
list_[2][0][1] = 301
|
|
list_[2][0][2] = 302
|
|
return list_
|
|
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
net = Net()
|
|
out = net()
|
|
assert list(out[0]) == [1]
|
|
assert list(out[1]) == [2, 2]
|
|
assert list(out[2][0]) == [300, 301, 302]
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
out = net()
|
|
assert list(out[0]) == [1]
|
|
assert list(out[1]) == [2, 2]
|
|
assert list(out[2][0]) == [300, 301, 302]
|
|
|
|
|
|
def test_list_neg_index_3d():
|
|
"""
|
|
Feature: List index assign
|
|
Description: Test list assign in pynative mode
|
|
Expectation: No exception.
|
|
"""
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
|
|
class Net(nn.Cell):
|
|
def construct(self):
|
|
list_ = [[1], [2, 2], [[3, 3, 3]]]
|
|
list_[2][0][-3] = 30
|
|
list_[2][0][-2] = 31
|
|
list_[2][0][-1] = 32
|
|
return list_
|
|
|
|
net = Net()
|
|
out = net()
|
|
assert list(out[0]) == [1]
|
|
assert list(out[1]) == [2, 2]
|
|
assert list(out[2][0]) == [30, 31, 32]
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
out = net()
|
|
assert list(out[0]) == [1]
|
|
assert list(out[1]) == [2, 2]
|
|
assert list(out[2][0]) == [30, 31, 32]
|
|
|
|
|
|
|
|
|
|
def test_list_index_1D_parameter():
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
class Net(nn.Cell):
|
|
def construct(self, x):
|
|
list_ = [x]
|
|
list_[0] = 100
|
|
return list_
|
|
|
|
net = Net()
|
|
net(Tensor(0))
|
|
|
|
|
|
def test_list_index_2D_parameter():
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
class Net(nn.Cell):
|
|
def construct(self, x):
|
|
list_ = [[x, x]]
|
|
list_[0][0] = 100
|
|
return list_
|
|
|
|
net = Net()
|
|
net(Tensor(0))
|
|
|
|
|
|
def test_list_index_3D_parameter():
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
class Net(nn.Cell):
|
|
def construct(self, x):
|
|
list_ = [[[x, x]]]
|
|
list_[0][0][0] = 100
|
|
return list_
|
|
|
|
net = Net()
|
|
net(Tensor(0))
|
|
|
|
|
|
def test_const_list_index_3D_bprop():
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
class Net(nn.Cell):
|
|
def __init__(self):
|
|
super(Net, self).__init__()
|
|
self.value = [[1], [2, 2], [[3, 3], [3, 3]]]
|
|
self.relu = P.ReLU()
|
|
|
|
def construct(self, input_x):
|
|
list_x = self.value
|
|
list_x[2][0][1] = input_x
|
|
return self.relu(list_x[2][0][1])
|
|
|
|
class GradNet(nn.Cell):
|
|
def __init__(self, net):
|
|
super(GradNet, self).__init__()
|
|
self.net = net
|
|
self.grad_all_with_sens = C.GradOperation(get_all=True, sens_param=True)
|
|
|
|
def construct(self, x, sens):
|
|
return self.grad_all_with_sens(self.net)(x, sens)
|
|
|
|
net = Net()
|
|
grad_net = GradNet(net)
|
|
x = Tensor(np.arange(2 * 3).reshape(2, 3))
|
|
sens = Tensor(np.arange(2 * 3).reshape(2, 3))
|
|
grad_net(x, sens)
|
|
|
|
|
|
def test_parameter_list_index_3D_bprop():
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
class Net(nn.Cell):
|
|
def __init__(self):
|
|
super(Net, self).__init__()
|
|
self.value = [[1], [2, 2], [[3, 3], [3, 3]]]
|
|
self.relu = P.ReLU()
|
|
|
|
def construct(self, x, value):
|
|
list_value = [[x], [x, x], [[x, x], [x, x]]]
|
|
list_value[2][0][1] = value
|
|
return self.relu(list_value[2][0][1])
|
|
|
|
class GradNet(nn.Cell):
|
|
def __init__(self, net):
|
|
super(GradNet, self).__init__()
|
|
self.net = net
|
|
self.grad_all_with_sens = C.GradOperation(get_all=True, sens_param=True)
|
|
|
|
def construct(self, x, value, sens):
|
|
return self.grad_all_with_sens(self.net)(x, value, sens)
|
|
|
|
net = Net()
|
|
grad_net = GradNet(net)
|
|
x = Tensor(np.arange(2 * 3).reshape(2, 3))
|
|
value = Tensor(np.ones((2, 3), np.int64))
|
|
sens = Tensor(np.arange(2 * 3).reshape(2, 3))
|
|
grad_net(x, value, sens)
|
|
|
|
|
|
|
|
class Net1(Cell):
|
|
def construct(self, a, b, start=None, stop=None, step=None):
|
|
a[start:stop:step] = b[start:stop:step]
|
|
return tuple(a)
|
|
|
|
|
|
def compare_func1(a, b, start=None, stop=None, step=None):
|
|
a[start:stop:step] = b[start:stop:step]
|
|
return tuple(a)
|
|
|
|
|
|
|
|
def test_list_slice_length_equal():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list assign the size is equal
|
|
Expectation: No exception.
|
|
"""
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
a = [1, 2, 3, 4]
|
|
b = [5, 6, 7, 8]
|
|
python_out = compare_func1(a, b, 0, None, 2)
|
|
|
|
a = [1, 2, 3, 4]
|
|
b = [5, 6, 7, 8]
|
|
net = Net1()
|
|
pynative_mode_out = net(a, b, 0, None, 2)
|
|
assert pynative_mode_out == python_out
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
graph_out = net(a, b, 0, None, 2)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_slice_length_error():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list assign the size is not equal
|
|
Expectation: ValueError.
|
|
"""
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
a = [1, 2, 3, 4, 5]
|
|
b = [5, 6, 7, 8]
|
|
net = Net1()
|
|
with pytest.raises(ValueError) as err:
|
|
net(a, b, 0, None, 2)
|
|
assert "attempt to assign sequence of size 2 to extended slice of size 3" in str(err.value)
|
|
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
with pytest.raises(ValueError) as err:
|
|
net(a, b, 0, None, 2)
|
|
assert "attempt to assign sequence of size 2 to extended slice of size 3" in str(err.value)
|
|
|
|
|
|
def compare_func2(a, b, start=None, stop=None, step=None):
|
|
a[start:stop:step] = b
|
|
return tuple(a)
|
|
|
|
|
|
class Net2(Cell):
|
|
def construct(self, a, b, start=None, stop=None, step=None):
|
|
a[start:stop:step] = b
|
|
return tuple(a)
|
|
|
|
|
|
def test_list_slice_shrink():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list slice shrink assign
|
|
Expectation: No exception.
|
|
"""
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33]
|
|
python_out = compare_func2(a, b, 0, 5)
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33]
|
|
net = Net2()
|
|
pynative_out = net(a, b, 0, 5)
|
|
assert pynative_out == python_out
|
|
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33]
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
graph_out = net(a, b, 0, 5)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_slice_insert():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list slice insert assign
|
|
Expectation: No exception.
|
|
"""
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
python_out = compare_func2(a, b, 0, 1)
|
|
net = Net2()
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
pynative_out = net(a, b, 0, 1)
|
|
assert pynative_out == python_out
|
|
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
graph_out = net(a, b, 0, 1)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_slice_assign():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list slice start and stop is larger than size
|
|
Expectation: No exception.
|
|
"""
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
python_out = compare_func2(a, b, -12, 456)
|
|
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
net = Net2()
|
|
pynative_out = net(a, b, -12, 456)
|
|
assert pynative_out == python_out
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
graph_out = net(a, b, -12, 456)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_slice_extend():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list slice extend
|
|
Expectation: No exception.
|
|
"""
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
net = Net2()
|
|
python_out = compare_func2(a, b, 1234, 0)
|
|
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
pynative_out = net(a, b, 1234, 0)
|
|
assert pynative_out == python_out
|
|
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
graph_out = net(a, b, 1234, 0)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_slice_extend_front():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list slice extend
|
|
Expectation: No exception.
|
|
"""
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
python_out = compare_func2(a, b, 0, 0)
|
|
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
net = Net2()
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
pynative_out = net(a, b, 0, 0)
|
|
assert pynative_out == python_out
|
|
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
graph_out = net(a, b, 0, 0)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_slice_extend_inner():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list slice extend
|
|
Expectation: No exception.
|
|
"""
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
python_out = compare_func2(a, b, 5, 5)
|
|
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
net = Net2()
|
|
pynative_out = net(a, b, 5, 5)
|
|
assert pynative_out == python_out
|
|
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33, 44, 55]
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
graph_out = net(a, b, 5, 5)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_slice_erase():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list slice erase
|
|
Expectation: No exception.
|
|
"""
|
|
a = [1, 2, 3, 4, 5, 6, 7]
|
|
python_out = compare_func2(a, [], 1, 3)
|
|
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
a = [1, 2, 3, 4, 5, 6, 7]
|
|
net = Net2()
|
|
pynative_out = net(a, [], 1, 3)
|
|
assert pynative_out == python_out
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
a = [1, 2, 3, 4, 5, 6, 7]
|
|
graph_out = net(a, [], 1, 3)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_slice_tuple_without_step():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list slice assign with tuple
|
|
Expectation: No exception.
|
|
"""
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = (11, 22, 33)
|
|
python_out = compare_func2(a, b, 0, 4, None)
|
|
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = (11, 22, 33)
|
|
net = Net2()
|
|
pynative_out = net(a, b, 0, 4, None)
|
|
assert pynative_out == python_out
|
|
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = (11, 22, 33)
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
graph_out = net(a, b, 0, 4, None)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_slice_tuple_with_step():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list slice assign with tuple
|
|
Expectation: No exception.
|
|
"""
|
|
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = (11, 22, 33)
|
|
python_out = compare_func2(a, b, 1, None, 3)
|
|
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = (11, 22, 33)
|
|
net = Net2()
|
|
pynative_out = net(a, b, 1, None, 3)
|
|
assert pynative_out == python_out
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
graph_out = net(a, b, 1, None, 3)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_double_slice():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test list double slice assign
|
|
Expectation: ValueError
|
|
"""
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
@ms_function
|
|
def foo(a, b, start1, stop1, step1, start2, stop2, step2):
|
|
a[start1:stop1:step1][start2: stop2: step2] = b
|
|
return a
|
|
|
|
class NetInner(Cell):
|
|
def construct(self, a, b, start1, stop1, step1, start2, stop2, step2):
|
|
a[start1:stop1:step1][start2: stop2: step2] = b
|
|
return tuple(a)
|
|
|
|
net = NetInner()
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [11, 22, 33]
|
|
assert foo(a, b, 0, None, 1, 0, None, 3) == net(a, b, 0, None, 1, 0, None, 3)
|
|
|
|
|
|
def convert_tuple(a):
|
|
result = tuple()
|
|
for i in a:
|
|
if isinstance(i, list):
|
|
result += (tuple(i),)
|
|
continue
|
|
result += (i,)
|
|
return result
|
|
|
|
|
|
def test_list_in_list_slice():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test high dimension list slice assign
|
|
Expectation: No exception.
|
|
"""
|
|
|
|
class TestNet(Cell):
|
|
def construct(self, a, b, index, start=None, stop=None, step=None):
|
|
a[index][start:stop:step] = b
|
|
return tuple(a)
|
|
|
|
def com_func3(a, b, index, start=None, stop=None, step=None):
|
|
a[index][start:stop:step] = b
|
|
return convert_tuple(a)
|
|
|
|
a = [1, 2, [1, 2, 3, 4, 5, 6, 7], 8, 9]
|
|
b = [1111, 2222]
|
|
python_out = com_func3(a, b, 2, 1, None, 3)
|
|
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
net = TestNet()
|
|
a = [1, 2, [1, 2, 3, 4, 5, 6, 7], 8, 9]
|
|
b = [1111, 2222]
|
|
pynative_out = convert_tuple(net(a, b, 2, 1, None, 3))
|
|
assert pynative_out == python_out
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
graph_out = convert_tuple(net(a, b, 2, 1, None, 3))
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_list_slice_negative_step():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test negative step list slice assign
|
|
Expectation: No exception.
|
|
"""
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [33, 44, 55]
|
|
python_out = compare_func2(a, b, -1, -9, -3)
|
|
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
net = Net2()
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [33, 44, 55]
|
|
pynative_out = net(a, b, -1, -9, -3)
|
|
assert pynative_out == python_out
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [33, 44, 55]
|
|
graph_out = net(a, b, -1, -9, -3)
|
|
assert graph_out == python_out
|
|
|
|
|
|
def test_graph_list_slice_assign_extended_number():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test negative step list slice assign
|
|
Expectation: No exception.
|
|
"""
|
|
a = [1, 2, 3, 4, 5, 6]
|
|
b = 1
|
|
|
|
net = Net2()
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
with pytest.raises(TypeError) as err:
|
|
net(a, b, 0, None, 2)
|
|
assert "must assign iterable to extended slice" in str(err.value)
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
with pytest.raises(TypeError) as err:
|
|
net(a, b, 0, None, 2)
|
|
assert "must assign iterable to extended slice" in str(err.value)
|
|
|
|
|
|
def test_graph_list_slice_assign_number():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test negative step list slice assign
|
|
Expectation: No exception.
|
|
"""
|
|
a = [1, 2, 3, 4, 5, 6]
|
|
b = 1
|
|
net = Net2()
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
with pytest.raises(TypeError) as err:
|
|
net(a, b, 0, None, 1)
|
|
assert "can only assign an iterable" in str(err.value)
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
with pytest.raises(TypeError) as err:
|
|
net(a, b, 0, None, 1)
|
|
assert "can only assign an iterable" in str(err.value)
|
|
|
|
|
|
def test_list_slice_negetive_error():
|
|
"""
|
|
Feature: List assign
|
|
Description: Test negative step list slice assign
|
|
Expectation: ValueError
|
|
"""
|
|
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
b = [33, 44, 55]
|
|
net = Net2()
|
|
context.set_context(mode=context.PYNATIVE_MODE)
|
|
with pytest.raises(ValueError) as err:
|
|
net(a, b, -1, -3, -3)
|
|
assert "attempt to assign sequence of size 3 to extended slice of size 1" in str(err.value)
|
|
|
|
context.set_context(mode=context.GRAPH_MODE)
|
|
with pytest.raises(ValueError) as err:
|
|
net(a, b, -1, -3, -3)
|
|
assert "attempt to assign sequence of size 3 to extended slice of size 1" in str(err.value)
|