Skip to content

Commit

Permalink
objectionary#3542 change definition of put
Browse files Browse the repository at this point in the history
  • Loading branch information
Suban05 committed Feb 18, 2025
1 parent 7de1b74 commit 9077b63
Show file tree
Hide file tree
Showing 10 changed files with 32 additions and 13 deletions.
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/org/eolang/AtComposite.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public void put(final int pos, final Phi phi) {
throw new ExReadOnly(
"Can't overwrite lambda expression"
);
Expand Down
4 changes: 2 additions & 2 deletions eo-runtime/src/main/java/org/eolang/AtLogged.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@ public Phi get() {
}

@Override
public void put(final Phi src) {
public void put(final int pos, final Phi src) {
this.log.info(String.format(" %s.put()...\n", this.owner));
this.origin.put(src);
this.origin.put(pos, src);
this.log.info(String.format(" %s.put()!\n", this.owner));
}
}
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/org/eolang/AtOnce.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public void put(final int pos, final Phi phi) {
throw new ExReadOnly(
String.format(
"Can't overwrite the \"%s\" attribute",
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/org/eolang/AtRho.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public void put(final int pos, final Phi phi) {
if (this.rho.get() == null) {
this.rho.set(phi);
}
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/org/eolang/AtVoid.java
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public void put(final int pos, final Phi phi) {
if (this.object.get() == null) {
this.object.set(phi);
} else {
Expand Down
4 changes: 2 additions & 2 deletions eo-runtime/src/main/java/org/eolang/AtWithRho.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
this.origin.put(phi);
public void put(final int pos, final Phi phi) {
this.origin.put(pos, phi);
}
}
3 changes: 2 additions & 1 deletion eo-runtime/src/main/java/org/eolang/Attr.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ public interface Attr {
/**
* Put a new object in.
*
* @param pos The position
* @param phi The object to put
*/
void put(Phi phi);
void put(int pos, Phi phi);
}
8 changes: 6 additions & 2 deletions eo-runtime/src/main/java/org/eolang/PhDefault.java
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,15 @@ public boolean hasRho() {

@Override
public void put(final int pos, final Phi object) {
this.put(this.attr(pos), object);
this.attrObject(this.attr(pos), object).put(pos, object);
}

@Override
public void put(final String name, final Phi object) {
this.attrObject(name, object).put(0, object);
}

private Attr attrObject(final String name, final Phi object) {
if (!this.attrs.containsKey(name)) {
throw new ExUnset(
String.format(
Expand All @@ -153,7 +157,7 @@ public void put(final String name, final Phi object) {
)
);
}
this.attrs.get(name).put(object);
return this.attrs.get(name);
}

@Override
Expand Down
4 changes: 2 additions & 2 deletions eo-runtime/src/test/java/org/eolang/AtEnvelope.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
this.origin.put(phi);
public void put(final int pos, final Phi phi) {
this.origin.put(pos, phi);
}
}
14 changes: 14 additions & 0 deletions eo-runtime/src/test/java/org/eolang/PhDefaultTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
*/
package org.eolang;

import EOorg.EOeolang.EOnumber;
import com.yegor256.Together;
import java.security.SecureRandom;
import org.cactoos.set.SetOf;
Expand Down Expand Up @@ -488,6 +489,19 @@ void doesNotCalculateRandomTwice() {
);
}

@Test
void failsCorrectlyWhenTooManyAttributesPut() {
MatcherAssert.assertThat(
"the message explains what's going on",
Assertions.assertThrows(
ExAbstract.class,
() -> new EOnumber().put(1, new Data.ToPhi(1)),
"fails when trying to set attribute with too big position"
).getMessage(),
Matchers.equalTo("There are no void attributes left, can't set the 1st one")
);
}

/**
* Rnd.
* @since 0.1.0
Expand Down

0 comments on commit 9077b63

Please sign in to comment.